質問: ue4でデスの後の処理で観戦モードに入るようにノードを組んでいるのですが、beginplayノードで確認してみたところ、 https://gyazo.com/05cf43c687e81f621829a94cd6bb027d 観戦モードになっていることが確認できました。 ですが、デスの後に処理を行ってほしいので、beginplayを取り、カスタムEventで、 https://gyazo.com/3fabf43061b5f8e7b16360b582c418ab getplayercharacterのここにつなげたいのですが、どれだけやっても候補枠に出ず、困っています。 レベルブループリントレベルブループリントにカスタムイベントを作ったのですが、 thirdpersoncharacterの中に連れてくることができませんでした。 解決方法教えていただけないでしょうか。
回答: > > なんとなくレベルブループリントとキャラクターやジオメトリのブループリントとが一方通行になっているような気がします。こういう時の解決法ってないでしょうか? > > > BP同士は基本的に直接やりとりをすることは出来ません。 やりとりをするには変数を用意し変数経由で他BPのイベントや関数を呼んだりします 特にレベルBPは特殊でレベル上に配置されているアクタのBPやウィジェットなどのレベルBP以外のBPからレベルBPの要素にアクセスすることは出来ません。 ですが逆にレベルBPからレベル上の各アクタへアクセスは出来る為そこをうまいこと使う感じです > > こうなって、レベルブループリントで作ったカスタムイベントがロックが掛かって呼び出せなくなっています。 > > > 上記のような仕様があるため普通のBP上からレベルBPのイベントを呼び出すことが出来ないのです ### ではどのように解決するか いくつか方法は思いつきますのでいくつか提示します 1. 観戦用カメラ(アクタ)が一つしかない場合はWidget内で `Get All Actors Of Class` ノードを使用する メリット : 簡単 デメリット : 処理が重い・観戦用カメラが複数ある場合は判定ロジックが必要 2. `GameInstance`に観戦用カメラを代入できる変数を用意し、レベルBPの`BeginPlay`時に代入して、使用する際に`GameInstance`から読み出す メリット : 簡単かつどこからでも読み出せる デメリット : どこからでも読み出せてしまうため不必要になった際にでも変数に残ってしまう 3. ~~`Spectator Class` を用意して`ワールドセッティング→Game Mode`に割り当てる メリット : おそらく観戦モードという意味では一番正規なやり方。プレイヤーごとに観戦用カメラを用意できる デメリット : 全プレイヤーで一つのカメラ≒視点にしたい場合はそのままでは処理が面倒。直接的に観戦用カメラを配置できない~~ **現時点でオフィシャルのドキュメント・コミュニティでの情報も非常に少ないためおすすめしません** 4. レベル上に直接配置された`Player Character`に観戦用カメラを代入できる変数を用意し、詳細タブから直接割り当てる(これをするには変数でインスタンス編集可能にチェックを入れる必要があります) メリット : 比較的簡単 デメリット : `Player Character`を直接配置する必要がある(`Player Start`などは使えない) この中でどの方法が質問者様にとって都合がいいか選んでいただければと思います。