Unity C#でPhotonNetworkを使った階層的ネットワークインスタンス生成方法

C言語関連

UnityでPhotonNetworkを用いて、UIボタンの操作に応じて階層的にネットワークインスタンスを生成する方法について解説します。子オブジェクト内にさらにネットワークインスタンスを生成したい場合、生成順序や参照の取得がポイントになります。

ネットワークインスタンスAを生成する

まず、Aボタンを押したときに、ネットワークインスタンスAを生成します。PhotonNetwork.Instantiateを使用して、Aプレハブを生成します。

生成後、Aの子オブジェクトとして空のGameObject Cを配置しておき、Bインスタンスの生成場所として確保します。

Bインスタンスの条件付き生成

Bボタンを押したときに、Bを生成する前にAが存在するか確認します。Aが存在していない場合はBを生成せず、存在する場合のみ空オブジェクトCを取得してBを生成します。

GameObject aInstance = GameObject.Find("A(Clone)");
if(aInstance != null) {
    Transform cTransform = aInstance.transform.Find("C");
    if(cTransform != null) {
        PhotonNetwork.Instantiate("BPrefab", cTransform.position, Quaternion.identity, 0, null);
    }
}

生成順序の管理

重要なのは、Bの生成は必ずAの生成後に行うことです。そのため、Bボタンのスクリプトでは必ずAの存在チェックを行い、存在しない場合は処理を停止するようにします。

これにより、A→C→Bの階層的な生成をUI操作に応じて安全に行えます。

まとめ

PhotonNetworkで階層的にネットワークインスタンスを生成する場合、親オブジェクトの生成確認と子オブジェクト参照が鍵です。UIボタンの順序に応じてAを生成し、存在確認後にBをCに生成することで、意図した動作を実現できます。

コメント

タイトルとURLをコピーしました