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

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

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

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

Q&A

解決済

1回答

7918閲覧

[Unity][photon]ネットワークオブジェトのparentを変更したい

Uragangin

総合スコア8

Unity

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

0グッド

1クリップ

投稿2020/07/31 12:40

編集2020/08/01 14:03

###やりたいこと
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); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーは、RPC のパラメータとして GameObject を渡すことはできない、ということを言っています。

int, float, string, Vector2, Vector3, Quaternion あたりは渡せますが、Transform とか GameObject は渡せません。

投稿2020/08/01 23:15

bboydaisuke

総合スコア5308

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

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

Uragangin

2020/08/02 02:49

いつもありがとうございます。 修正してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問