teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

詳細やスクリプトを記述

2020/12/10 08:14

投稿

Jejeje
Jejeje

スコア38

title CHANGED
File without changes
body CHANGED
@@ -2,5 +2,213 @@
2
2
 
3
3
  名前はInputFieldに入力した名前をPhotonNetwork.NickNameに格納しています。
4
4
 
5
+ ちなみに精査記しているゲームは3Dオンライン対戦ゲームで、戦車を操作して弾を発射して戦うゲームです
5
6
 
7
+
6
- いろいろと試しましたがどうしても相手の名前を取得できなかったので質問させていただきました。
8
+ いろいろと試しましたがどうしても相手の名前を取得できなかったので質問させていただきました。
9
+
10
+ ### 試したこと
11
+
12
+ CNameInputField.csでPhotonNetwork.NickNameを設定
13
+
14
+ PlayerID.csでキャラクターをルームにInstantiateし、そのInstantiateしたキャラクターに自分のPhotonNetwork.NickNameを入れる(PhotonNetwork.NickNameはキャラクターにアタッチしているNickName.csに格納する)
15
+
16
+ ゲーム終了後にSyouhai.csでシーン上に残っているキャラクターをFindGameObjectWithTagで検索し、GetComponent<NickName>();でプレイヤーのNickNameをパネルに表示
17
+
18
+ という流れで試してみましたが相手が勝利者の場合相手の名前が表示されませんでした。
19
+
20
+ ※流れを分かりやすく
21
+
22
+ CNameInputField.csでプレイヤーの名前(PhotonNetwork.NickName)を設定
23
+
24
+ PlayerID.csでキャラクターを生成、そのキャラクターのNickName.csに名前(PhotonNetwork.NickName)を入れる
25
+
26
+ 対戦終了後Syouhai.csが作動し、シーンに残っているキャラクターの名前をTextに入れる
27
+ そのTextを全員に表示する
28
+
29
+
30
+
31
+ ### CNameInputField.cs
32
+
33
+ ```C#
34
+ using UnityEngine;
35
+ using UnityEngine.UI;
36
+ using System.Collections;
37
+ using Photon.Pun;
38
+ using Photon.Realtime;
39
+ public class CNameInputField : MonoBehaviourPunCallbacks
40
+ {
41
+ #region Private変数定義
42
+ static string playerNamePrefKey = "PlayerName";
43
+
44
+ InputField _inputField;
45
+ #endregion
46
+ #region MonoBehaviourコールバック
47
+ void Start()
48
+ {
49
+ string defaultName = "";
50
+ _inputField = this.GetComponent<InputField>();
51
+ //前回プレイ開始時に入力した名前をロードして表示
52
+ if (_inputField != null)
53
+ {
54
+ if (PlayerPrefs.HasKey(playerNamePrefKey))
55
+ {
56
+ defaultName = PlayerPrefs.GetString(playerNamePrefKey);
57
+ _inputField.text = defaultName;
58
+ }
59
+ }
60
+ }
61
+ #endregion
62
+ #region Public Method
63
+ public void SetPlayerName()
64
+ {
65
+ PhotonNetwork.NickName = _inputField.text + " ";//今回ゲームで利用するプレイヤーの名前を設定
66
+ PlayerPrefs.SetString(playerNamePrefKey, _inputField.text);//今回の名前をセーブ
67
+
68
+ Debug.Log(PhotonNetwork.NickName);
69
+ }
70
+ #endregion
71
+ }
72
+ ```
73
+
74
+ ### PlayerID.cs
75
+
76
+ ```C#
77
+ using System;
78
+ using System.Collections;
79
+ using UnityEngine;
80
+ using UnityEngine.SceneManagement;
81
+ using Photon.Pun;
82
+ using Photon.Realtime;
83
+
84
+ public class PlayerID : MonoBehaviourPunCallbacks
85
+ {
86
+ public FixedJoystick joystick;
87
+
88
+ public GameObject gameplayer1;
89
+ public GameObject gameplayer2;
90
+
91
+ int id;
92
+ NickName script;
93
+
94
+ void Awake()
95
+ {
96
+
97
+
98
+ //PhotonNetwork.IsMessageQueueRunning = true;
99
+
100
+ PhotonNetwork.AutomaticallySyncScene = false;
101
+
102
+ id = PhotonNetwork.LocalPlayer.ActorNumber;
103
+ var v = new Vector3(-5.5f, 0.5f, -3.5f);
104
+ var v2 = new Vector3(5.5f, 0.5f, 3.5f);
105
+ //var v3 = new Vector3(-5.5f, 0.5f, 3.5f);
106
+ //var v4 = new Vector3(5.5f, 0.5f, -3.5f);
107
+ if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ
108
+ {
109
+ SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る
110
+ return;
111
+ }
112
+ if (id == 1)
113
+ {
114
+ Debug.Log("ID = " + id);
115
+
116
+ GameObject Player1 = PhotonNetwork.Instantiate(this.gameplayer1.name, v, Quaternion.identity);
117
+
118
+ script = Player1.GetComponent<NickName>();
119
+ script.PhotonName = PhotonNetwork.NickName;
120
+
121
+
122
+
123
+ Debug.Log("script.PhotonName" + script.PhotonName);
124
+
125
+ }
126
+ else if (id == 2)
127
+ {
128
+ Debug.Log("ID = " + id);
129
+
130
+ GameObject Player2 = PhotonNetwork.Instantiate(this.gameplayer2.name, v2, Quaternion.identity);
131
+
132
+ script = Player2.GetComponent<NickName>();
133
+ script.PhotonName = PhotonNetwork.NickName;
134
+ Debug.Log("script.PhotonName" + script.PhotonName);
135
+
136
+ }
137
+
138
+ }
139
+
140
+
141
+
142
+
143
+ }
144
+ ```
145
+
146
+ ### Syouhai.cs
147
+
148
+ ```C#
149
+ using System.Collections;
150
+ using System.Collections.Generic;
151
+ using UnityEngine;
152
+ using Photon.Pun;
153
+ using UnityEngine.UI;
154
+ using Photon.Realtime;
155
+
156
+ public class Syouhai : MonoBehaviourPunCallbacks
157
+ {
158
+ public GameObject winPanel;
159
+ public Text winText;
160
+
161
+ GameObject wintank;
162
+ public string winname;
163
+ NickName script;
164
+
165
+ void Start()
166
+ {
167
+ winPanel.SetActive(false);
168
+ }
169
+
170
+ public void ActivePanel()
171
+ {
172
+ wintank = GameObject.FindGameObjectWithTag("tank");
173
+ Debug.Log("wintank = " + wintank);
174
+
175
+ script = wintank.GetComponent<NickName>();
176
+ Debug.Log("script =" + script);
177
+
178
+ winname = script.PhotonName;
179
+
180
+ Debug.Log(winname + "のかち");
181
+
182
+ winText.text = winname + "のかち";
183
+ winPanel.SetActive(true);
184
+
185
+ }
186
+
187
+ }
188
+
189
+ ```
190
+
191
+ ### NickName.cs
192
+
193
+ ```C#
194
+ using System.Collections;
195
+ using System.Collections.Generic;
196
+ using UnityEngine;
197
+ using Photon.Pun;
198
+ using Photon.Realtime;
199
+
200
+ public class NickName : MonoBehaviourPunCallbacks
201
+ {
202
+ public string PhotonName;
203
+ }
204
+
205
+ ```
206
+
207
+ ### 発生している問題
208
+
209
+ 勝利者が相手の場合、相手の名前が表示されない
210
+
211
+
212
+ ### 補足情報(FW/ツールのバージョンなど)
213
+
214
+ Unity 2019 4.11f1