Unity初心者ですが、2Dカードゲームを作ろうとしています。
ある程度UIを使って形にしたので、PUN2を用いてオンライン対戦を実装しようとしましたが、初っ端でつまずいてしまいました。
ネットワークオブジェクトを生成する際に、3Dオブジェクトの生成は下記のコードを参考に作成はできるのですが、UIで作った2Dのネットワークオブジェクトを生成しようとするとCanvasがないため表示されません。(当たり前だと思いますが、、)
C#
1// ランダムな座標に自身のアバター(ネットワークオブジェクト)を生成する 2var position = new Vector3(Random.Range(-3f, 3f), Random.Range(-3f, 3f)); 3PhotonNetwork.Instantiate("Avatar", position, Quaternion.identity);
そこでCanvasオブジェクトを用意して、生成したネットワークオブジェクトの親をそのCanvasオブジェクトにしてみました。実行すると目論見通りできているのですが、Buildしてみても2つの表示はされません(それぞれのネットワークオブジェクトのみが表示)。
そもそも2Dのネットワークオブジェクトの生成は可能なのでしょうか?
また、普通のオブジェクトを、生成したネットワークオブジェクトの親に設定すると、同期できないのでしょうか?
PUN2の理解が足りてないと思いますが、ご教示お願いいたします。
自分のHierarchy
OnlineManagerのスクリプト
C#
1public class SampleScene : MonoBehaviourPunCallbacks 2{ 3 [SerializeField] Transform canvasObj; 4 private void Start() { 5 Debug.Log("スタート"); 6 // プレイヤー自身の名前を"Player"に設定する 7 PhotonNetwork.NickName = "Player"; 8 // PhotonServerSettingsの設定内容を使ってマスターサーバーへ接続する 9 PhotonNetwork.ConnectUsingSettings(); 10 } 11 12 // マスターサーバーへの接続が成功した時に呼ばれるコールバック 13 public override void OnConnectedToMaster() { 14 // "Room"という名前のルームに参加する(ルームが存在しなければ作成して参加する) 15 PhotonNetwork.JoinOrCreateRoom("Room", new RoomOptions(), TypedLobby.Default); 16 } 17 18 // ゲームサーバーへの接続が成功した時に呼ばれるコールバック 19 public override void OnJoinedRoom() { 20 Debug.Log("Room入室"); 21 // ランダムな座標に自身のアバター(ネットワークオブジェクト)を生成する 22 var position = new Vector3(Random.Range(-300, 300), Random.Range(-300, 300)); 23 var playerPanel = PhotonNetwork.Instantiate("PlayerPanel", position, Quaternion.identity); 24 playerPanel.transform.SetParent(canvasObj); 25 } 26}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/19 15:11