質問: new Vector3(Random.Range(-3f, 3f), Random.Range(-3f, 3f)); PhotonNetwork.Instantiate("UnkomanEmpty", v, Quaternion.identity); Debug.Log("unko"); } ``` というコードを書いてプレファブをインスタンス化しようとしているのですが、うまくいきません。 まず、このコードではランダムな位置にオブジェクトが生成されるはずですが、実行してみるとそうはならず、シーンビューでオブジェクトを配置した場所と同じところにオブジェクトが生成されます。 また、自身のネットワークオブジェクトのみ操作できるようにする「if(photonView.IsMine)」を書くと、その{}内のコードが動かなくなります。 上記コード内のDebug.Logは動いています。 この事から、おそらくネットワークオブジェクトのインスタンス化ができていないのだとわかります。 ですが、なぜインスタンス化ができないのかがわかりません。 インスタンス化したいプレファブには、しっかりPhotonViewコンポーネントをつけてあります。 インスタンス化したいプレファブはResourcesフォルダに入れてあります。 何度も確認しましたがスペルミスは見当たりませんでした。 Photon関連のスクリプトは、全て参考先のサイトのもののコピペです。 それでもインスタンス化が上手くできない原因がわかりません。 わかる方教えてください。 参考先サイトと自分の画面が違うところが1つだけあり、PhotonViewコンポーネントの中身が少しだけサイトと違います。 これが原因かどうかはわからないのですが、一応載せておきます。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/7d3c2c84a03436767dda90d01736d704.png) またPhoton関連でもう1つ質問があって、 インスタンス化したいネットワークオブジェクトは全てResourcesフォルダに入れる必要がありますが、どこのResorcesフォルダに入れればいいのかわかりません。 Assets直下には、自分で作ったResourcesフォルダがあります。アセットストアからインポートしたPUN2の「PhotonUnityNetworking」フォルダの中にもResorcesフォルダがあります。 このうち、どちらのResourcesフォルダに入れれば良いのでしょうか? どちらに入れても構わないのでしょうか? 今回は一応どちらのフォルダにもプレファブを入れました。
回答: 「ネットワークオブジェクトとして使いたいプレハブ」がシーンに置きっぱなしなんじゃないですか?だから * シーンビューでオブジェクトを配置した場所と同じところにオブジェクトが生成されます。 * 「if(photonView.IsMine)」を書くと、その{}内のコードが動かなくなります。 といったことが起きるのではないかと思います。 > > PhotonViewコンポーネントの中身が少しだけサイトと違います。 > > > PhotonView の Observed Component に Photon Transform View がありませんね。これでは Transform の情報が同期されません。つまり座標・回転・縮尺が同期されません。すなわち移動しても非オーナーのクライアントでは動きません。 > > 全てResourcesフォルダに入れる必要がありますが、どこのResorcesフォルダに入れればいいのかわかりません。 > > > どこでもかまいません。複数あればスキャンして見つけてくれます。 蛇足ですが、そのためにフォルダが増えれば増えるほど Unity Editor は遅くなります。 * Unity マニュアル - 特殊なフォルダー名