我制作/想要制作一个子弹地狱游戏,其中基本上有两个玩家,每个玩家拥有他们自己相同的地图竞赛副本以获得高分。每当玩家死亡时游戏就会结束。
我所有这些都在多人游戏中工作,但我的方法看起来有些笨拙,所以我想知道是否有更好的方法来实现这一目标。
起初我只使用Unity的网络管理器,在我的播放器Start()函数中,我检查了是否(!isLocal),如果是,我将gameObject设置为false。这很有效,但就像我说的那样,感觉有点笨拙。
代码示例:
var filename = $('input[type=file]').val()
接下来,我搬到了团结大厅。这是事情变得非常棘手的地方。现在在主持人上,游戏加载得很好,但在客户端上,只创建了一个游戏对象,并且它被设置为禁用,这让我相信它是“敌人”。或不是本地玩家对象。
我慢慢想通了,原因是将敌方游戏对象设置为false。如果我把它保持为真,两个玩家都会在两个屏幕上产生。我现在的解决方案是不禁用敌方玩家对象,而是禁用它上面的每个组件,这样就不会妨碍它。
这再次感觉非常黑客,并且可能会导致问题。这真的是最好的选择,还是我错过了一些明显的东西?
代码示例:
if (!isLocalPlayer) {
gameObject.SetActive(false);
return;
}
提前致谢!对不起,这太长了,希望这不是一件苦差事。
答案 0 :(得分:1)
制作一个空白的场景,除了得分经理外,你还需要传输什么。
在项目文件夹中将另一个场景作为资源,这是地图所在的位置。
当玩家加入时,让他们与得分经理一起加入现场。
如果他们也是本地玩家,他们应该加载地图场景。
这样,两个玩家都将在同一场景中,同时拥有自己的地图实例。
您可以异步和附加地加载场景,这对您的情况非常理想。