マルチプレイにおいてキャラクターの頭上にSteamユーザー名を表示したい | UE4&5 Forum | Tech Stadium Forum

マルチプレイにおいてキャラクターの頭上...
 
通知
すべてクリア

マルチプレイにおいてキャラクターの頭上にSteamユーザー名を表示したい  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
05/02/2024 12:37 am  
マルチプレイにおいて、キャラクターの頭上にSteamユーザー名を表示したいと思っています。
 
以下のようにLocalUserNumを0にしているため、ClientTravelでロビーに人が集まっても全員同じ名前になります。(ユーザーAのPC上では全員ユーザーAの名前で表示され、ユーザーBのPC上では全員ユーザーBの名前で表示される)
UserDispName = IdentityInterface->GetPlayerNickname(0);
LocalUserNumを変えるにしても、「ClientTravelで人は増えたのをどう検知するのか」「どのActorが何番目なのかをどう判定するのか」パッと思い浮かばないのですが、これはどうするのが良さそうでしょうか? 

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

返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
05/02/2024 12:39 am  

NotifyPlayerJoinedLobby 関数がUEにあることを前提としているけど、これがどういう関数なのか不明で且つ、ドキュメントに無いように見える。
「ロビーに参加した時にそれを知らせるRPC関数を作成し」とあるので、そのような関数を自作したのだと思うが、それをどうやったのかが分からず。)


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
05/02/2024 12:40 am  
IOnlineSession::AddOnJoinSessionCompleteDelegate_Handle()
でJoinSesson成功時に呼び出されるデリゲート内でClientTravel()をしているので、そのタイミングでサーバー側で実行する関数を実行させることは可能。ただし、ClientTravel()完了後に実行にはならなそうな印象。
 
なお、それだけでいうとClientTravel()でキャラクターが増えると、サーバーとクライアントの両方のPCでBeginPlayが実行されるので、あとはHasAuthority時のみ処理をすればClientTravelで人が増えた時にサーバー側で処理をさせるのはできる気がした。
 
このとき、該当キャラのプレイヤーIDを取得してGetPlayerNickname()の引数に入れればうまくいくのだろうか。試してみる。プレイヤーIDがLocalUserNumのことなのかがちょっと気になっている。 

返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
05/02/2024 12:40 am  

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