我正在开发赛车游戏,目前在加载赛道场景后实例化赛车时遇到困难。
我有一个本地的“ RaceGuard”,基本上调用了此方法:
public void CreateLocalPlayer()
{
while (!PhotonNetwork.IsConnectedAndReady)
{
}
GameObject Player = PhotonNetwork.Instantiate(prefabName, Vector3.zero, Quaternion.identity);
PhotonView pV = Player.GetComponent<PhotonView>();
Player.transform.position = raceGuard.singleRaceStart1To7[pV.OwnerActorNr - 1].position;
Player.transform.rotation = raceGuard.singleRaceStart1To7[pV.OwnerActorNr - 1].rotation;
}
现在,我构建游戏并运行它,并在Unity中运行游戏的第二个实例。 当我对此进行测试时,通常会遇到两种情况:
1]一切都按预期进行:两个游戏的两名玩家都位于正确的位置。
2]一种游戏只有一辆汽车(本地玩家),而另一种游戏只有3辆汽车(本地玩家,然后在同一地点产生了两个远程玩家)。
我很难找到导致此问题的原因,也很难调试,因为我只能单步执行Unity实例中的代码,但是没有任何东西看起来可疑或抛出错误。 包括一些印刷品,我可以看到在错误的情况下,“ CarCreated”方法被调用了3次,但我不知道为什么。
也许我在做一些非常基本的错误。由于这是我第一次创建多人游戏,因此我观看了教程,用Google搜索等,但没有发现任何描述我问题的信息。
答案 0 :(得分:0)
我要确保的第一件事是,场景中您的“ RaceGuard”脚本实例不超过1个。我认为这不是您的问题。
我认为最可能的问题是由于场景加载,您发布的方法被多次执行。这是另一个有类似问题的人:https://forum.photonengine.com/discussion/13198/new-players-spawning-twice-on-existing-players
因此请确保不要多次加载场景。
希望这些建议之一可以解决您的问题。如果没有有关项目设置的更多信息,则可能很难调试。