新玩家加入时同步先前的实例化对象

时间:2018-01-25 02:18:42

标签: unity3d photon

我目前正致力于生存游戏,其中" zombies"在地图上产生并追逐玩家。僵尸由InstantiateSceneObject对象zombie_spawner实例化。

问题是已经连接的玩家可以看到僵尸,而加入的新玩家不会看到它们。新玩家只会看到僵尸在加入游戏后实例化。

当新玩家加入正在进行的游戏时,我应该使用哪种方法为新玩家创建“旧”僵尸?

这是我到目前为止在主客户端上产生新僵尸的原因:

if (!PhotonNetwork.isMasterClient)
    return;
GameObject zb = PhotonNetwork.InstantiateSceneObject(zombie_name, transform.position + transform.up, Quaternion.identity, 0, null);

这应该让主客户端管理产卵,并在时机成熟时产生新的敌人。这是正确的方法吗?然后,如何为主客户端以外的其他玩家同步已经实例化的僵尸?

1 个答案:

答案 0 :(得分:0)

您可以尝试从主客户端实施RPC调用。

关于播放器脚本:

if (PhotonNetwork.IsMasterClient)
    {
        photonView.RPC("SpawnZombieFromMaster", RpcTarget.AllBuffered);
    }

[PunRPC]
void SpawnZombieFromMaster()
    {
        ZombieSpawner.instance.SpawnZombie();
    }

在您的单例“ ZombieSpawner”脚本上:

public void SpawnZombie()
    {
        GameObject zb = PhotonNetwork.InstantiateSceneObject(zombie_name, transform.position + transform.up, Quaternion.identity, 0, null)
    }