質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1348閲覧

[Unity] PUN2でビルドするとオブジェクトを生成できない

minokiti

総合スコア45

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/09/04 08:07

# [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"になっている状況です。
アドバイスをいただけるだけでも幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードをざっと見た感じ、サーバーに接続できているかどうか確認していないみたいなので、まずはログを見てエラーか何か出てないか、必要なログが出ているかチェックした方がいいと思います。

PC だったらこの記事とか、それ以外だったらマニュアルを見ればログの場所は書いてあります。

投稿2021/09/04 09:51

bboydaisuke

総合スコア5277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問