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



我目前正在开发一款生存游戏,其中"僵尸"会在地图上生成并追逐玩家。僵尸通过zombie_spawner对象上的InstantiateSceneObject进行实例化。

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

当新玩家加入已经在进行中的游戏时,我应该调用什么方法来为他们创建"旧"僵尸?

以下是到目前为止我在主客户端上生成新僵尸的内容:

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

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

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

在播放器脚本上:

if (PhotonNetwork.IsMasterClient)
    {
        photonView.RPC("SpawnZombieFromMaster", RpcTarget.AllBuffered);
    }
[PunRPC]
void SpawnZombieFromMaster()
    {
        ZombieSpawner.instance.SpawnZombie();
    }

在你的单例"僵尸生成者"脚本中:

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

最新更新