# [Unity PUN2] ビルドするとオブジェクトが生成されない
unityでオンラインボードゲームを作っています。
マッチングした時に自分の駒を生成するようにしています。
エディターではちゃんと生成されるのですが、ビルドしたアプリで試すと生成されません。
GamePlayer
1using System; 2using System.Collections; 3using System.Collections.Generic; 4using System.Linq; 5using UnityEngine; 6using UnityEngine.UI; 7using Photon.Pun; 8using Photon.Realtime; 9 10 public class GamePlayer : MonoBehaviourPunCallbacks 11 { 12 NetworkManager networkManager; 13 14 public int id; 15 private PhotonView photonView; 16 17 // 5 * 5 の2次元配列 18 public int[,] squares = new int[5, 5]; 19 20 // EMPTY=0, WHITE=1, BLACK=-1で定義 21 private const int EMPTY = 0; 22 private const int WHITE = 1; 23 private const int BLACK = -1; 24 25 //現在のプレイヤー(初期プレイヤーは黒) 26 public int currentPlayer = BLACK; 27 28 public string turn = "Black"; 29 public bool IsMyTurn; 30 31 public GameObject turn_text_object; 32 Text turn_text; 33 34 public GameObject state_text_object; 35 Text state_text; 36 37 //カメラ情報 38 public Camera camera_object; 39 Vector3 Black_Pos = new Vector3(2.1f, 14.73f, 1.25f); 40 Quaternion Black_Rotate = new Quaternion(0.67f, 0f, 0f, 0.73f); 41 Vector3 White_Pos = new Vector3(2.1f, 14.73f, 3.3f); 42 Quaternion White_Rotate = new Quaternion(0f, -0.73f, 0.67f, 0f); 43 44 private RaycastHit hit; 45 46 int count = 0; 47 Outline outline; 48 public GameObject tapPiece; 49 Vector3 Piece_pos; 50 bool choose; 51 52 public int x; 53 public int z; 54 55 public int[] cell_to_move; 56 57 public bool created; 58 59 void Start() 60 { 61 camera_object = GameObject.Find("Main Camera").GetComponent<Camera>(); 62 networkManager = GameObject.Find("NetworkManager").GetComponent<NetworkManager>(); 63 64 //配列を初期化(最初の盤面に戻す) 65 InitializeArray(); 66 67 //プレイヤーのIDを取得する。 68 photonView = this.GetComponent<PhotonView>(); 69 id = photonView.OwnerActorNr; 70 //どっちのターンか確認するためのテキスト 71 turn_text = turn_text_object.GetComponent<Text>(); 72 //デバッグ用のテキスト 73 state_text = state_text_object.GetComponent<Text>(); 74 75 //自分の駒を作る 76 Invoke("createOwnPiece", 2.5f); 77 } 78 79 //略 80 81 //自分の駒を作る 82 void createOwnPiece() 83 { 84 if (networkManager.character == "Black") 85 { 86 state_text.text = "Passing1"; 87 for (int i = 0; i < 5; i++) 88 { 89 PhotonNetwork.Instantiate("BlackPiece", new Vector3(i, 0.4f, 0f), Quaternion.identity); 90 } 91 } 92 else 93 { 94 state_text.text = "Passing2"; 95 for (int i = 0; i < 5; i++) 96 { 97 PhotonNetwork.Instantiate("WhitePiece", new Vector3(i, 0.4f, 4f), Quaternion.identity); 98 } 99 } 100 created = true; 101 } 102 103 //略 104 105 public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) 106 { 107 108 // オーナーの場合 109 if (stream.IsWriting) 110 { 111 stream.SendNext(turn); 112 } 113 // オーナー以外の場合 114 else 115 { 116 this.turn = (string)stream.ReceiveNext(); 117 } 118 } 119 120 [PunRPC] 121 void Change(string turn_str) 122 { 123 turn = turn_str; 124 } 125 } 126
ネットワークマネージャー(サーバーへ接続し、ルームに参加するためのスクリプト)
NetworkManager
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Photon.Pun; 5using Photon.Realtime; 6using UnityEngine.UI; 7 8public class NetworkManager : MonoBehaviourPunCallbacks 9{ 10 //自分の色(黒か白) 11 public string character; 12 public GameObject CheckMaster; 13 Text master_text; 14 public bool joined = false; 15 16 void Start() 17 { 18 PhotonNetwork.NickName = "Player"; 19 PhotonNetwork.ConnectUsingSettings(); 20 } 21 22 void Update() 23 { 24 //マスタークライアントかどうか確認するためのテキスト 25 master_text = CheckMaster.GetComponent<Text>(); 26 } 27 28 //マスターサーバーへの接続が成功したときに呼ばれるコールバック 29 public override void OnConnectedToMaster() 30 { 31 PhotonNetwork.JoinRandomRoom(); 32 } 33 34 //ランダムで参加できるルームがないならルームを作成 35 public override void OnJoinRandomFailed(short returnCode, string message) 36 { 37 //ルームの参加人数を2人に設定する 38 var roomOptions = new RoomOptions(); 39 roomOptions.MaxPlayers = 2; 40 41 PhotonNetwork.CreateRoom(null, roomOptions); 42 } 43 44 //ゲームサーバーへの接続が成功したときに呼ばれるコールバック 45 public override void OnJoinedRoom() 46 { 47 // ローカルプレイヤーがマスタークライアントかどうかを判定する 48 if (PhotonNetwork.IsMasterClient) 49 { 50 character = "Black"; 51 master_text.text = "マスタークライアント"; 52 } 53 else 54 { 55 character = "White"; 56 master_text.text = "マスタークライアントじゃない"; 57 } 58 Debug.Log(character); 59 Debug.Log("サーバーへの接続に成功しました"); 60 //ルームが満員になったらそのルームへの参加を断る 61 if (PhotonNetwork.CurrentRoom.PlayerCount > PhotonNetwork.CurrentRoom.MaxPlayers) 62 { 63 Debug.Log("満員です"); 64 PhotonNetwork.CurrentRoom.IsOpen = false; 65 } 66 joined = true; 67 } 68} 69
今は「GamePlayer」のstate_textは"Passing1"になっている状況です。
アドバイスをいただけるだけでも幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。