###やりたいこと
photonNetwork.Instantiateで生成したネットワークオブジェクトのparentを変更したい。
PhotonViewの監視対象をPhotonTransformViewにしてもうまく同期出来ませんでした。
そのためRPCによる同期をしようとしています。
生成したネットワークオブジェクトをRPCで呼び出したSetParentで親の変更をする。
###現在の状態
・GamaManagerから下記のコードを呼び出している。
・下記のコードCreateCardスクリプトをCardプレハブに追加している。
・Photon ViewスクリプトをCardプレハブに追加している。
###できていること
Cardオブジェクトの生成まで
GameObject Card1 = PhotonNetwork.Instantiate("Card", Vector3.zero, Quaternion.identity);
###できないこと
CardオブジェクトのSetpatent
↓のどちらかが出来ていない?
・photonView2 = Card2.GetComponent<PhotonView>();
・photonView1.RPC("SParent", RpcTarget.All, Card1, p1Hand);
###エラーメッセージ
Exception: Write failed. Custom type not found: UnityEngine.GameObject ExitGames.Client.Photon.Protocol18.WriteCustomType (ExitGames.Client.Photon.StreamBuffer stream, System.Object value, System.Boolean writeType) (at <a497a6f18e1f4b419421b940add27a6e>:0)
###コード
using System.Collections; using System.Collections.Generic; using Photon.Pun; using Photon.Realtime; using UnityEngine; public class CreateCard : MonoBehaviourPunCallbacks { public void Init(Transform p1Hand, Transform p2Hand) { //PhotonView photonView = PhotonView.Get(this); // マッチング後、ランダムな位置に自分自身のネットワークオブジェクトを生成する if (PhotonNetwork.PlayerList.Length == 1) { GameObject Card1 = PhotonNetwork.Instantiate("Card", Vector3.zero, Quaternion.identity); PhotonView photonView1 = Card1.GetComponent<PhotonView>(); photonView1.RPC("SParent", RpcTarget.All, Card1, p1Hand); } else { GameObject Card2 = PhotonNetwork.Instantiate("Card", Vector3.zero, Quaternion.identity); PhotonView photonView2 = null; photonView2 = Card2.GetComponent<PhotonView>(); photonView2.RPC("SParent", RpcTarget.All, Card2, p2Hand); } } [PunRPC] void SParent(GameObject card, Transform hand) { card.transform.SetParent(hand.transform); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/02 02:49