我在Unity中有一个多人游戏。我使用PhotonEngine。
在游戏中有一只鸡,它是玩家。它可以从地上捡起种子。然后它将种子带到一个给定时间内的某个地方并获得一分。
问题在于我想将此种子实例化为场景对象。这是我执行此操作的代码:
public virtual void OnJoinedRoom()
{
PhotonNetwork.Instantiate(player.name, spawnPoint.position, spawnPoint.rotation, 0);
lobbyCamera.SetActive(false);
PhotonNetwork.InstantiateSceneObject(seed.name, spawnPoint.position, spawnPoint.rotation, 1, null);
Debug.Log("1 seed spawned.");
}
但不知怎的,它不起作用。该程序不会给出错误或警告。此外,我看到写入debug.log的消息。所以原则上它已经产生了。但它没有出现在层次结构中,它没有出现在任何地方。所以它没有这样做。我做错了什么?
P.S。我将种子预制件添加到代码中。它位于资源文件夹中。所以这不是问题。
答案 0 :(得分:0)
我唯一想到的是也许你不是主客户?尝试更改
中的代码if (PhotonNetwork.isMasterClient)
{
PhotonNetwork.InstantiateSceneObject(seed.name, spawnPoint.position, spawnPoint.rotation, 1, null);
}
否则每个加入房间的玩家都会尝试在没有获得许可的情况下在场景中产生一个物体。
答案 1 :(得分:0)
我认为您正在将该对象实例化为兴趣组1。 也许您的客户未在该组中注册,所以它将不会收到这些事件。
PhotonNetwork.InstantiateSceneObject(seed.name, spawnPoint.position, spawnPoint.rotation, 1, null);
尝试将该行中的数字1更改为0。(0是所有兴趣组,这意味着它广播给所有用户) 您不能从组0注销。