Unity3D光子网络-RPC以实例化对象

时间:2019-03-02 02:37:52

标签: unity3d rpc instantiation photon

我想问一下Unity3D中的光子网络。 我刚刚开始学习它,我想尝试在网络中实例化对象。

我正在尝试使用RPC实例化每个对象(因此,我认为它将在本地调用并且可以轻松更改播放器属性)。 这是我的使用RPC实例化对象的代码,非常简单。

public MultiplayerManager instance;
private void Awake()
{
    if (instance == null)
        instance = this;

    else
    {
        Destroy(this.gameObject);
    }
}
void Start()
{
    photonView.RPC("RPC_CreatePlayer", RpcTarget.All);
}


[PunRPC] 
private void RPC_CreatePlayer()
{
    Vector3 instantiatedPosition;
    instantiatedPosition.x = Random.Range(45f, 70f);
    instantiatedPosition.y = 40f;
    instantiatedPosition.z = Random.Range(220f, 260f);
    GameObject instantiatedPlayer = PhotonNetwork.Instantiate("player", instantiatedPosition, Quaternion.identity, 0);
    instantiatedPlayer.GetComponent<MeshRenderer>().material = LocalPlayerManager.instance.mat;
}

结果实际上是成功的。 每个对象都实例化,但是错误是:

只要房间中有N位玩家,对象都会实例化N次。 例如,房间里有3个玩家,当我开始游戏时,将实例化9个对象。

每个玩家是否都有自己的MultiplayerManager,因此他们每个人都会将RPC发送给其他玩家吗? 我应该只输入条件 PhotonNetwork.isMasterClient ,然后它将发送RPC吗? (它确实有效,但这是最好的解决方案吗?)

我想弄清楚,但我不能:“ D哈哈 有什么不对 ? 谢谢。

0 个答案:

没有答案
相关问题