2014年8月6日水曜日

PhotonCloud OnPhotonInstantiateでのエラーについて

おっす、siroponnです。

今回はOnPhotonInstantiateのエラーについてです。

OnPhotonInstantiateはPhotonNetwork.Instantiate により生成された GameObject(とその子オブジェクト)上のすべてのスクリプトでコールされる(公式抜粋)

さて、こういったエラーが出たことありませんか?

TargetParameterCountException: parameters do not match signature.

これは
void OnPhotonInstantiate()
と書いてしまうと、出ます。

ただしくは

void OnPhotonInstantiate(PhotonMessageInfo info)
という風に引数を入れてあげないとダメです。

これは簡単なエラーだったのですぐ見つかりました。
が、びっくりしたので書き記しておきます。

RPCでは引数いらないのにこれは引数いるのはなんでじゃー。って思ったのは秘密。


では凡人siroponnでした~~。ノシシ

次はどうしよう。ネタがないから、うーん。しばらく考えてみます。

追記:08/07 05:34

OnPhotonInstantiateの使い方を書き忘れていました。


public class A :  MonoBehaviour{

    int TestId;
   
    void Test()
    {
        object[] obj = new object[1];

        int[] id = new int[1];

        id[0] = TestId;

        obj[0] = (int)id[0];
       
        PhotonNetowork.Instantiate("TestPrefab",this.transform.position,Quaternion.identity,0,obj)
   
    }
}

public class TestPrefabScript : MonoBehaviour{

    int catchId;
   
    PhotonView pView;
   
    void Awake()
    {
        pView = GetComponent<PhotonView>();
    }
   
    void OnPhotonInstantiate(PhotonMessageInfo info)
    {
        this.catchId = (int)this.pView.instantiationData[0];
    }

}

PhotonNetwork.Instantiateの時にobject型を送ります。
インスタンスされたオブジェクトに付随するPhotonViewにアクセスする。
するとinstantiationDataにobject型の送られてきた値が入っているのでOnPhotonInstantiateで受け取る。
調べていませんが、別にOnPhotonInstantiateで受け取る必要はないかもしれません。

0 件のコメント:

コメントを投稿