質問編集履歴
2
ソースコードの記載
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
PUN2 ルームに入れないようにしたい
|
1
|
+
PUN2 ゲーム開始後にルームに入れないようにしたい
|
body
CHANGED
@@ -17,9 +17,153 @@
|
|
17
17
|
roomOptions.IsVisible = false;
|
18
18
|
roomOptions.IsOpen = false;
|
19
19
|
|
20
|
+
|
21
|
+
下記がランダムマッチングに使用しているロビー作成or参加からゲーム画面に遷移するまでの全スクリプトです
|
22
|
+
|
23
|
+
Home画面(ここでランダムマッチを選択すると**CLauncher2.cs**が呼ばれPhotonに接続する)
|
24
|
+
|
25
|
+
↓RandomBattleシーンに遷移
|
26
|
+
|
27
|
+
RandomBattleシーン(**RandomBattle.cs**が呼ばれPhotonNetwork.JoinOrCreateRoomする)
|
28
|
+
|
29
|
+
↓OnJoinedRoomするとRandomLobbyシーンに遷移
|
30
|
+
|
31
|
+
RandomLobbyシーン(**RandomLobby.cs**が呼ばれ参加者が集まるまで待機する,PhotonNetwork.PlayerList.Length == 2になったら
|
32
|
+
roomOptions.IsVisible = false; roomOptions.IsOpen = false;
|
33
|
+
にしてゲーム画面に遷移)
|
34
|
+
|
35
|
+
|
36
|
+
### CLauncher2.cs
|
20
37
|
```C#
|
38
|
+
using UnityEngine;
|
39
|
+
using UnityEngine.UI;
|
40
|
+
using UnityEngine.SceneManagement;
|
41
|
+
using Photon.Pun;
|
42
|
+
using Photon.Realtime;
|
43
|
+
|
44
|
+
public class CLauncher2 : MonoBehaviourPunCallbacks
|
45
|
+
{
|
46
|
+
#region Public変数定義
|
47
|
+
|
48
|
+
|
49
|
+
//Public変数の定義はココで
|
50
|
+
|
51
|
+
#endregion
|
52
|
+
|
21
|
-
|
53
|
+
#region Private変数
|
54
|
+
//Private変数の定義はココで
|
55
|
+
#endregion
|
56
|
+
|
57
|
+
#region Public Methods
|
58
|
+
//ログインボタンを押したときに実行される
|
59
|
+
public void Connect()
|
22
60
|
{
|
61
|
+
//Photonに接続できていなければ
|
62
|
+
if (!PhotonNetwork.IsConnected)
|
63
|
+
{
|
64
|
+
PhotonNetwork.ConnectUsingSettings(); //Photonに接続する
|
65
|
+
Debug.Log("Photonに接続しました。");
|
66
|
+
if (string.IsNullOrEmpty(PhotonNetwork.NickName))
|
67
|
+
{
|
68
|
+
PhotonNetwork.NickName = "player" + Random.Range(1, 99999);
|
69
|
+
}
|
70
|
+
PhotonNetwork.LoadLevel("RandomBattle");
|
71
|
+
}
|
72
|
+
else
|
73
|
+
{
|
74
|
+
//PhotonNetwork.ConnectUsingSettings();
|
75
|
+
Debug.Log("Photonに接続しました2");
|
76
|
+
PhotonNetwork.LoadLevel("RandomBattle");
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
#endregion
|
83
|
+
|
84
|
+
void OnGUI()
|
85
|
+
{
|
86
|
+
//ログインの状態を画面上に出力
|
87
|
+
GUILayout.Label(PhotonNetwork.NetworkClientState.ToString());
|
88
|
+
}
|
89
|
+
|
90
|
+
}
|
91
|
+
```
|
92
|
+
|
93
|
+
### RandomBattle.cs
|
94
|
+
```C#
|
95
|
+
using UnityEngine;
|
96
|
+
using UnityEngine.UI;
|
97
|
+
using UnityEngine.SceneManagement;
|
98
|
+
using Photon.Pun;
|
99
|
+
using Photon.Realtime;
|
100
|
+
public class RandomBattle : MonoBehaviourPunCallbacks
|
101
|
+
{
|
102
|
+
private void Start()
|
103
|
+
{
|
104
|
+
// PhotonServerSettingsに設定した内容を使ってマスターサーバーへ接続する
|
105
|
+
PhotonNetwork.ConnectUsingSettings();
|
106
|
+
}
|
107
|
+
|
108
|
+
// マスターサーバーへの接続が成功した時に呼ばれるコールバック
|
109
|
+
public override void OnConnectedToMaster()
|
110
|
+
{
|
111
|
+
Debug.Log("接続Master");
|
112
|
+
|
113
|
+
RoomOptions roomOptions = new RoomOptions();
|
114
|
+
roomOptions.IsVisible = true; //ロビーで見える部屋にする
|
115
|
+
roomOptions.IsOpen = true; //他のプレイヤーの入室を許可する
|
116
|
+
roomOptions.MaxPlayers = 2; //入室可能人数を設定
|
117
|
+
|
118
|
+
// "room"という名前のルームに参加する(ルームが無ければ作成してから参加する)
|
119
|
+
PhotonNetwork.JoinOrCreateRoom("room", roomOptions, TypedLobby.Default);
|
120
|
+
|
121
|
+
}
|
122
|
+
|
123
|
+
|
124
|
+
// マッチングが成功した時に呼ばれるコールバック
|
125
|
+
public override void OnJoinedRoom()
|
126
|
+
{
|
127
|
+
//SceneManager.LoadSceneAsync("RandomLobby", LoadSceneMode.Single);
|
128
|
+
PhotonNetwork.LoadLevel("RandomLobby");
|
129
|
+
}
|
130
|
+
|
131
|
+
}
|
132
|
+
```
|
133
|
+
### RandomLobby.cs
|
134
|
+
```C#
|
135
|
+
using System.Collections;
|
136
|
+
using System.Collections.Generic;
|
137
|
+
using UnityEngine;
|
138
|
+
using UnityEngine.UI;
|
139
|
+
using UnityEngine.SceneManagement;
|
140
|
+
using Photon.Pun;
|
141
|
+
using Photon.Realtime;
|
142
|
+
|
143
|
+
public class RandomLobbyUI : MonoBehaviourPun
|
144
|
+
{
|
145
|
+
bool go = true;
|
146
|
+
private float step_time;
|
147
|
+
|
148
|
+
// Start is called before the first frame update
|
149
|
+
void Start()
|
150
|
+
{
|
151
|
+
if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ
|
152
|
+
{
|
153
|
+
SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る
|
154
|
+
return;
|
155
|
+
}
|
156
|
+
|
157
|
+
PhotonNetwork.AutomaticallySyncScene = true;
|
158
|
+
go = true;
|
159
|
+
Debug.Log("PhotonNetwork.PlayerList.Length = " + PhotonNetwork.PlayerList.Length);
|
160
|
+
step_time = 0.0f;
|
161
|
+
|
162
|
+
}
|
163
|
+
|
164
|
+
// Update is called once per frame
|
165
|
+
void Update()
|
166
|
+
{
|
23
167
|
if (PhotonNetwork.IsMasterClient)
|
24
168
|
{
|
25
169
|
//Debug.Log("自分はマスター");
|
@@ -33,9 +177,17 @@
|
|
33
177
|
|
34
178
|
Debug.Log("roomOptions.IsVisible = " + roomOptions.IsVisible);
|
35
179
|
Debug.Log("roomOptions.IsOpen = " + roomOptions.IsOpen);
|
180
|
+
|
36
|
-
|
181
|
+
Debug.Log("PhotonNetwork.PlayerList.Length = " + PhotonNetwork.PlayerList.Length);
|
182
|
+
Debug.Log("2名参加ゲーム開始");
|
183
|
+
|
184
|
+
step_time += Time.deltaTime;
|
185
|
+
if (step_time >= 3.0f)
|
186
|
+
{
|
37
|
-
|
187
|
+
PhotonNetwork.LoadLevel("RandomB");
|
38
|
-
|
188
|
+
go = false;
|
189
|
+
}
|
190
|
+
|
39
191
|
}
|
40
192
|
else
|
41
193
|
{
|
@@ -44,10 +196,15 @@
|
|
44
196
|
}
|
45
197
|
|
46
198
|
}
|
199
|
+
|
200
|
+
|
201
|
+
}
|
202
|
+
|
47
203
|
```
|
48
204
|
|
49
|
-
とルームオプションを上書きし、ルームに入れなくしています
|
50
205
|
|
206
|
+
|
207
|
+
|
51
208
|
ですが試してみたところ失敗でゲーム終了後の1人だけになったルームに入れてしまいました。
|
52
209
|
|
53
210
|
どうかアドバイスの方よろしくお願いします・・・
|
1
ソースコードの記載
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,6 +17,35 @@
|
|
17
17
|
roomOptions.IsVisible = false;
|
18
18
|
roomOptions.IsOpen = false;
|
19
19
|
|
20
|
+
```C#
|
21
|
+
void Update()
|
22
|
+
{
|
23
|
+
if (PhotonNetwork.IsMasterClient)
|
24
|
+
{
|
25
|
+
//Debug.Log("自分はマスター");
|
26
|
+
|
27
|
+
|
28
|
+
if (go && PhotonNetwork.PlayerList.Length >= 2)
|
29
|
+
{
|
30
|
+
RoomOptions roomOptions = new RoomOptions();
|
31
|
+
roomOptions.IsVisible = false;
|
32
|
+
roomOptions.IsOpen = false;
|
33
|
+
|
34
|
+
Debug.Log("roomOptions.IsVisible = " + roomOptions.IsVisible);
|
35
|
+
Debug.Log("roomOptions.IsOpen = " + roomOptions.IsOpen);
|
36
|
+
|
37
|
+
PhotonNetwork.LoadLevel("RandomB");
|
38
|
+
go = false;
|
39
|
+
}
|
40
|
+
else
|
41
|
+
{
|
42
|
+
Debug.Log("ゲーム開始できません");
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
}
|
47
|
+
```
|
48
|
+
|
20
49
|
とルームオプションを上書きし、ルームに入れなくしています
|
21
50
|
|
22
51
|
ですが試してみたところ失敗でゲーム終了後の1人だけになったルームに入れてしまいました。
|