ブループリントクラスで作った変数をレベルブループリントに持っていきたいのですが、Interfaceなどでメッセージとして受け渡すことは可能でしょうか・・・
Interface以外でも可能ならば教えていただきたいです。
どのような用途(イベント発行時だけ必要なのか、毎フレーム必要なのか等)で変数を使うのか分からないので3点思いつく方法をあげますと
- GetAllActorsOfClassで検索をかける方法
- レベル上に最初から存在するならそのままリファレンスを呼び出せるのでそれを使う方法
- GameModeなど(GetGameModeの様にノードが用意されているクラス)にActorのリファレンスを保存してレベルブループリントでそのブループリントを経由して持ってくる方法
でしょうか。どのような感じで変数を利用するかによっては、ここに上げた方法以外の方がいい場合もあるかもしれません
回答ありがとうございます。
Interfaceを使わずにCastで変数を持ってきてTickで動かすことも可能なのですが
できればInterfaceのイベントをレベルで動かしたいです。
自分でもやってみたのですがレベル上でのInterfaceのイベントがうまく動きません。
何にインターフェースをもたせようとしてるのかわからないのですが、
レベルブループリントその物に、インターフェース型を継承させることは出来ないはずです。
ブループリントクラスにインターフェース型を継承させることは出来ます。
レベルブループリントから呼び出す時に、そのインターフェース型にキャストして使えば、クラスでキャストするよりも柔軟性があります。
それ以外の方法だと、上記の質問のケースと同じで、事前にバインドしておくことで、任意のタイミングでカスタムイベントを呼び出すという方法があります。
やり方を逆にして、レベルブループリント上にディスパッチャを作って、そこにブループリントクラスのカスタムイベントをバインドする方法もあります。キャストは必要ですが、バインドする時の1回で済みます。
unaunagiさんのおっしゃられるようにイベントディスパッチャーを使う方法が私も良いかと思います
どうしてもInterfaceが良いという場合ですが、以下のようにすればレベルのInterfaceのイベントを動かすことができました
まず、GameMode(Character等でも良いが必ず存在する物から選びました)にObject型のReference変数を用意します
次に、レベルBPに以下のようにSelfReferenceをGameModeに用意した変数に保存するようにしました。一緒にInterfaceのイベントも用意しました。
最後に、以下のようにすれば実行されると思います
すばらしい回答ありがとうございます!
自分のやりたいことが完璧に回答されていて驚きました!
このたびは本当にありがとうございました!
回答ありがとうございます!
うまくいきました!
このたびは本当にありがとうございました!