質問編集履歴

2

ソースコードの記載

2020/12/12 16:02

投稿

Jejeje
Jejeje

スコア38

test CHANGED
@@ -1 +1 @@
1
- PUN2 ルームに入れないようにしたい
1
+ PUN2 ゲーム開始後にルームに入れないようにしたい
test CHANGED
@@ -36,9 +36,297 @@
36
36
 
37
37
 
38
38
 
39
+
40
+
41
+ 下記がランダムマッチングに使用しているロビー作成or参加からゲーム画面に遷移するまでの全スクリプトです
42
+
43
+
44
+
45
+ Home画面(ここでランダムマッチを選択すると**CLauncher2.cs**が呼ばれPhotonに接続する)
46
+
47
+
48
+
49
+ ↓RandomBattleシーンに遷移
50
+
51
+
52
+
53
+ RandomBattleシーン(**RandomBattle.cs**が呼ばれPhotonNetwork.JoinOrCreateRoomする)
54
+
55
+
56
+
57
+ ↓OnJoinedRoomするとRandomLobbyシーンに遷移
58
+
59
+
60
+
61
+ RandomLobbyシーン(**RandomLobby.cs**が呼ばれ参加者が集まるまで待機する,PhotonNetwork.PlayerList.Length == 2になったら
62
+
63
+ roomOptions.IsVisible = false; roomOptions.IsOpen = false;
64
+
65
+ にしてゲーム画面に遷移)
66
+
67
+
68
+
69
+
70
+
71
+ ### CLauncher2.cs
72
+
39
73
  ```C#
40
74
 
75
+ using UnityEngine;
76
+
77
+ using UnityEngine.UI;
78
+
79
+ using UnityEngine.SceneManagement;
80
+
81
+ using Photon.Pun;
82
+
83
+ using Photon.Realtime;
84
+
85
+
86
+
87
+ public class CLauncher2 : MonoBehaviourPunCallbacks
88
+
89
+ {
90
+
91
+ #region Public変数定義
92
+
93
+
94
+
95
+
96
+
97
+ //Public変数の定義はココで
98
+
99
+
100
+
101
+ #endregion
102
+
103
+
104
+
105
+ #region Private変数
106
+
107
+ //Private変数の定義はココで
108
+
109
+ #endregion
110
+
111
+
112
+
113
+ #region Public Methods
114
+
115
+ //ログインボタンを押したときに実行される
116
+
117
+ public void Connect()
118
+
119
+ {
120
+
121
+ //Photonに接続できていなければ
122
+
123
+ if (!PhotonNetwork.IsConnected)
124
+
125
+ {
126
+
127
+ PhotonNetwork.ConnectUsingSettings(); //Photonに接続する
128
+
129
+ Debug.Log("Photonに接続しました。");
130
+
131
+ if (string.IsNullOrEmpty(PhotonNetwork.NickName))
132
+
133
+ {
134
+
135
+ PhotonNetwork.NickName = "player" + Random.Range(1, 99999);
136
+
137
+ }
138
+
139
+ PhotonNetwork.LoadLevel("RandomBattle");
140
+
141
+ }
142
+
143
+ else
144
+
145
+ {
146
+
147
+ //PhotonNetwork.ConnectUsingSettings();
148
+
149
+ Debug.Log("Photonに接続しました2");
150
+
151
+ PhotonNetwork.LoadLevel("RandomBattle");
152
+
153
+ }
154
+
155
+ }
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+ #endregion
164
+
165
+
166
+
167
+ void OnGUI()
168
+
169
+ {
170
+
171
+ //ログインの状態を画面上に出力
172
+
173
+ GUILayout.Label(PhotonNetwork.NetworkClientState.ToString());
174
+
175
+ }
176
+
177
+
178
+
179
+ }
180
+
181
+ ```
182
+
183
+
184
+
185
+ ### RandomBattle.cs
186
+
187
+ ```C#
188
+
189
+ using UnityEngine;
190
+
191
+ using UnityEngine.UI;
192
+
193
+ using UnityEngine.SceneManagement;
194
+
195
+ using Photon.Pun;
196
+
197
+ using Photon.Realtime;
198
+
199
+ public class RandomBattle : MonoBehaviourPunCallbacks
200
+
201
+ {
202
+
203
+ private void Start()
204
+
205
+ {
206
+
207
+ // PhotonServerSettingsに設定した内容を使ってマスターサーバーへ接続する
208
+
209
+ PhotonNetwork.ConnectUsingSettings();
210
+
211
+ }
212
+
213
+
214
+
215
+ // マスターサーバーへの接続が成功した時に呼ばれるコールバック
216
+
217
+ public override void OnConnectedToMaster()
218
+
219
+ {
220
+
221
+ Debug.Log("接続Master");
222
+
223
+
224
+
225
+ RoomOptions roomOptions = new RoomOptions();
226
+
227
+ roomOptions.IsVisible = true; //ロビーで見える部屋にする
228
+
229
+ roomOptions.IsOpen = true; //他のプレイヤーの入室を許可する
230
+
231
+ roomOptions.MaxPlayers = 2; //入室可能人数を設定
232
+
233
+
234
+
235
+ // "room"という名前のルームに参加する(ルームが無ければ作成してから参加する)
236
+
237
+ PhotonNetwork.JoinOrCreateRoom("room", roomOptions, TypedLobby.Default);
238
+
239
+
240
+
241
+ }
242
+
243
+
244
+
245
+
246
+
247
+ // マッチングが成功した時に呼ばれるコールバック
248
+
249
+ public override void OnJoinedRoom()
250
+
251
+ {
252
+
253
+ //SceneManager.LoadSceneAsync("RandomLobby", LoadSceneMode.Single);
254
+
255
+ PhotonNetwork.LoadLevel("RandomLobby");
256
+
257
+ }
258
+
259
+
260
+
261
+ }
262
+
263
+ ```
264
+
265
+ ### RandomLobby.cs
266
+
267
+ ```C#
268
+
269
+ using System.Collections;
270
+
271
+ using System.Collections.Generic;
272
+
273
+ using UnityEngine;
274
+
275
+ using UnityEngine.UI;
276
+
277
+ using UnityEngine.SceneManagement;
278
+
279
+ using Photon.Pun;
280
+
281
+ using Photon.Realtime;
282
+
283
+
284
+
285
+ public class RandomLobbyUI : MonoBehaviourPun
286
+
287
+ {
288
+
289
+ bool go = true;
290
+
291
+ private float step_time;
292
+
293
+
294
+
295
+ // Start is called before the first frame update
296
+
297
+ void Start()
298
+
299
+ {
300
+
301
+ if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ
302
+
303
+ {
304
+
305
+ SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る
306
+
307
+ return;
308
+
309
+ }
310
+
311
+
312
+
313
+ PhotonNetwork.AutomaticallySyncScene = true;
314
+
315
+ go = true;
316
+
317
+ Debug.Log("PhotonNetwork.PlayerList.Length = " + PhotonNetwork.PlayerList.Length);
318
+
319
+ step_time = 0.0f;
320
+
321
+
322
+
323
+ }
324
+
325
+
326
+
327
+ // Update is called once per frame
328
+
41
- void Update()
329
+ void Update()
42
330
 
43
331
  {
44
332
 
@@ -68,11 +356,27 @@
68
356
 
69
357
  Debug.Log("roomOptions.IsOpen = " + roomOptions.IsOpen);
70
358
 
359
+
360
+
71
-
361
+ Debug.Log("PhotonNetwork.PlayerList.Length = " + PhotonNetwork.PlayerList.Length);
362
+
72
-
363
+ Debug.Log("2名参加ゲーム開始");
364
+
365
+
366
+
367
+ step_time += Time.deltaTime;
368
+
369
+ if (step_time >= 3.0f)
370
+
371
+ {
372
+
73
- PhotonNetwork.LoadLevel("RandomB");
373
+ PhotonNetwork.LoadLevel("RandomB");
74
-
374
+
75
- go = false;
375
+ go = false;
376
+
377
+ }
378
+
379
+
76
380
 
77
381
  }
78
382
 
@@ -90,11 +394,21 @@
90
394
 
91
395
  }
92
396
 
397
+
398
+
399
+
400
+
401
+ }
402
+
403
+
404
+
93
405
  ```
94
406
 
95
407
 
96
408
 
97
- とルームオプションを上書きし、ルームに入れなくしています
409
+
410
+
411
+
98
412
 
99
413
 
100
414
 

1

ソースコードの記載

2020/12/12 16:01

投稿

Jejeje
Jejeje

スコア38

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,64 @@
36
36
 
37
37
 
38
38
 
39
+ ```C#
40
+
41
+ void Update()
42
+
43
+ {
44
+
45
+ if (PhotonNetwork.IsMasterClient)
46
+
47
+ {
48
+
49
+ //Debug.Log("自分はマスター");
50
+
51
+
52
+
53
+
54
+
55
+ if (go && PhotonNetwork.PlayerList.Length >= 2)
56
+
57
+ {
58
+
59
+ RoomOptions roomOptions = new RoomOptions();
60
+
61
+ roomOptions.IsVisible = false;
62
+
63
+ roomOptions.IsOpen = false;
64
+
65
+
66
+
67
+ Debug.Log("roomOptions.IsVisible = " + roomOptions.IsVisible);
68
+
69
+ Debug.Log("roomOptions.IsOpen = " + roomOptions.IsOpen);
70
+
71
+
72
+
73
+ PhotonNetwork.LoadLevel("RandomB");
74
+
75
+ go = false;
76
+
77
+ }
78
+
79
+ else
80
+
81
+ {
82
+
83
+ Debug.Log("ゲーム開始できません");
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ }
92
+
93
+ ```
94
+
95
+
96
+
39
97
  とルームオプションを上書きし、ルームに入れなくしています
40
98
 
41
99