対戦開始前や後に自分と相手の名前を画面に表示させたいです。
名前はInputFieldに入力した名前をPhotonNetwork.NickNameに格納しています。
ちなみに精査記しているゲームは3Dオンライン対戦ゲームで、戦車を操作して弾を発射して戦うゲームです
いろいろと試しましたがどうしても相手の名前を取得できなかったので質問させていただきました。
試したこと
CNameInputField.csでPhotonNetwork.NickNameを設定
PlayerID.csでキャラクターをルームにInstantiateし、そのInstantiateしたキャラクターに自分のPhotonNetwork.NickNameを入れる(PhotonNetwork.NickNameはキャラクターにアタッチしているNickName.csに格納する)
ゲーム終了後にSyouhai.csでシーン上に残っているキャラクターをFindGameObjectWithTagで検索し、GetComponent<NickName>();でプレイヤーのNickNameをパネルに表示
という流れで試してみましたが相手が勝利者の場合相手の名前が表示されませんでした。
※流れを分かりやすく
CNameInputField.csでプレイヤーの名前(PhotonNetwork.NickName)を設定
↓
PlayerID.csでキャラクターを生成、そのキャラクターのNickName.csに名前(PhotonNetwork.NickName)を入れる
↓
対戦終了後Syouhai.csが作動し、シーンに残っているキャラクターの名前をTextに入れる
そのTextを全員に表示する
CNameInputField.cs
C#
1using UnityEngine; 2using UnityEngine.UI; 3using System.Collections; 4using Photon.Pun; 5using Photon.Realtime; 6public class CNameInputField : MonoBehaviourPunCallbacks 7{ 8 #region Private変数定義 9 static string playerNamePrefKey = "PlayerName"; 10 11 InputField _inputField; 12 #endregion 13 #region MonoBehaviourコールバック 14 void Start() 15 { 16 string defaultName = ""; 17 _inputField = this.GetComponent<InputField>(); 18 //前回プレイ開始時に入力した名前をロードして表示 19 if (_inputField != null) 20 { 21 if (PlayerPrefs.HasKey(playerNamePrefKey)) 22 { 23 defaultName = PlayerPrefs.GetString(playerNamePrefKey); 24 _inputField.text = defaultName; 25 } 26 } 27 } 28 #endregion 29 #region Public Method 30 public void SetPlayerName() 31 { 32 PhotonNetwork.NickName = _inputField.text + " ";//今回ゲームで利用するプレイヤーの名前を設定 33 PlayerPrefs.SetString(playerNamePrefKey, _inputField.text);//今回の名前をセーブ 34 35 Debug.Log(PhotonNetwork.NickName); 36 } 37 #endregion 38}
PlayerID.cs
C#
1using System; 2using System.Collections; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5using Photon.Pun; 6using Photon.Realtime; 7 8public class PlayerID : MonoBehaviourPunCallbacks 9{ 10 public FixedJoystick joystick; 11 12 public GameObject gameplayer1; 13 public GameObject gameplayer2; 14 15 int id; 16 NickName script; 17 18 void Awake() 19 { 20 21 22 //PhotonNetwork.IsMessageQueueRunning = true; 23 24 PhotonNetwork.AutomaticallySyncScene = false; 25 26 id = PhotonNetwork.LocalPlayer.ActorNumber; 27 var v = new Vector3(-5.5f, 0.5f, -3.5f); 28 var v2 = new Vector3(5.5f, 0.5f, 3.5f); 29 //var v3 = new Vector3(-5.5f, 0.5f, 3.5f); 30 //var v4 = new Vector3(5.5f, 0.5f, -3.5f); 31 if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ 32 { 33 SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る 34 return; 35 } 36 if (id == 1) 37 { 38 Debug.Log("ID = " + id); 39 40 GameObject Player1 = PhotonNetwork.Instantiate(this.gameplayer1.name, v, Quaternion.identity); 41 42 script = Player1.GetComponent<NickName>(); 43 script.PhotonName = PhotonNetwork.NickName; 44 45 46 47 Debug.Log("script.PhotonName" + script.PhotonName); 48 49 } 50 else if (id == 2) 51 { 52 Debug.Log("ID = " + id); 53 54 GameObject Player2 = PhotonNetwork.Instantiate(this.gameplayer2.name, v2, Quaternion.identity); 55 56 script = Player2.GetComponent<NickName>(); 57 script.PhotonName = PhotonNetwork.NickName; 58 Debug.Log("script.PhotonName" + script.PhotonName); 59 60 } 61 62 } 63 64 65 66 67}
Syouhai.cs
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Photon.Pun; 5using UnityEngine.UI; 6using Photon.Realtime; 7 8public class Syouhai : MonoBehaviourPunCallbacks 9{ 10 public GameObject winPanel; 11 public Text winText; 12 13 GameObject wintank; 14 public string winname; 15 NickName script; 16 17 void Start() 18 { 19 winPanel.SetActive(false); 20 } 21 22 public void ActivePanel() 23 { 24 wintank = GameObject.FindGameObjectWithTag("tank"); 25 Debug.Log("wintank = " + wintank); 26 27 script = wintank.GetComponent<NickName>(); 28 Debug.Log("script =" + script); 29 30 winname = script.PhotonName; 31 32 Debug.Log(winname + "のかち"); 33 34 winText.text = winname + "のかち"; 35 winPanel.SetActive(true); 36 37 } 38 39} 40
NickName.cs
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Photon.Pun; 5using Photon.Realtime; 6 7public class NickName : MonoBehaviourPunCallbacks 8{ 9 public string PhotonName; 10} 11
発生している問題
勝利者が相手の場合、相手の名前が表示されない
補足情報(FW/ツールのバージョンなど)
Unity 2019 4.11f1
回答3件
あなたの回答
tips
プレビュー