我目前正在开发一款生存游戏,其中"僵尸"会在地图上生成并追逐玩家。僵尸通过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)
}