レベルを横断して存続するものに処理を持たせる良い方法 | UE4&5 Forum | Tech Stadium Forum

レベルを横断して存続するものに処理を持...
 
通知
すべてクリア

レベルを横断して存続するものに処理を持たせる良い方法  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
05/02/2024 12:34 am  

ゲームインスタンス、ゲームインスタンスサブシステムについて教えてください。

現在、ホーム画面となるレベルに「セッションを作る」などのUIを配置しており、そのUUserWidgetにセッション周りの処理を書いています。

ただ、レベルに移動すると該当UIが不要になるので、都度レベルのどこかにセッションの処理をするクラスを用意することになり、同じ記述を何度もすることになる予感がしてきました。

レベルを横断して存続するものに処理を持たせるのが良さそうですが、良い方法はありますでしょうか?

ゲームインスタンスサブシステムを使うのが良さそうとあったのですが、これはどういうものでしょうか?

また、このC++を作成するときファイル名の横にあるドロップダウンは何でしょうか?


引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
05/02/2024 12:35 am  

ゲーム インスタンスは、ゲームが実行されている間に維持される単一のインスタンスで、異なるレベル間でデータを共有するのに適しています。

・C++では UGameInstance クラスを継承して使用し、ブループリントでは "Game Instance" クラスを作成して使用します。
・データを保存する変数をゲーム インスタンス クラスに追加します。
・ゲーム インスタンスにアクセスするには、C++では UGameplayStatics::GetGameInstance 関数を使用するか、ブループリントでは Get Game Instance ノードを使用します。

これらの方法のいずれかを選択して、データを他のレベルに渡し、維持することができます。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
05/02/2024 12:35 am  
回答ありがとうございます。
  • 今回のような実装をしたいとき、ゲームインスタンスとゲームインスタンスサブシステムのどちらを使うべきでしょうか?またその違いは何でしょうか?
  • スクショにも貼りましたが、C++作成時にファイル名の横にあるドロップダウンは何でしょうか?この「何か」に対してのみ有効なインスタンスでないのかと思っているのと、同一の「何か」に対して気軽に何個も作っていいものなのか気になっています。

返信引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
05/02/2024 12:36 am  

>今回のような実装をしたいとき、ゲームインスタンスとゲームインスタンスサブシステムのどちらを使うべきでしょうか?またその違いは何でしょうか?

C++で継承して使う場合は「UGameInstanceSubsystem」を使ったほうがいいと思います。
サブシステムについては以下の公式ドキュメントがご参考になると思います。
https://docs.unrealengine.com/5.3/ja/programming-subsystems-in-unreal-engine/
・UGameInstanceSubsystem
https://docs.unrealengine.com/5.3/en-US/API/Runtime/Engine/Subsystems/UGameInstanceSubsystem/
・UGameInstance
https://docs.unrealengine.com/5.2/en-US/API/Runtime/Engine/Engine/UGameInstance/

 

>スクショにも貼りましたが、C++作成時にファイル名の横にあるドロップダウンは何でしょうか?この「何か」に対してのみ有効なインスタンスでないのかと思っているのと、同一の「何か」に対して気軽に何個も作っていいものなのか気になっています。

Unreal EngineでC++クラスを作成する際、ファイル名の右側に「Runtime(ランタイム)」という項目がある場合、それはそのクラスがゲームのランタイム環境で動作するコードであることを示しています。
「ランタイム」はプログラムが実行されている間の時間を意味し、ゲームエンジンでは「ランタイム」環境でのみ必要なコードやクラスを示すために「Runtime」という用語が使用されます。これらのクラスは主にゲームプレイに関連するロジックやオブジェクトを定義するために使用されます。
一方、「エディタ」に関連するクラスは、Unreal Engineエディタで使用されるツール、エディタの拡張、エディタでのUIなどを扱うコードを示すために、ファイル名に「Editor」という用語が使用されることがあります。

返信引用
共有:
タイトルとURLをコピーしました