当我尝试在多人游戏中

时间:2017-06-13 20:15:02

标签: unity3d unity5 multiplayer

当我在单人多人游戏中按Lan主机按钮时,它使用预分配我分配和Runner(克隆)出现在层次结构中。但它没有出现在屏幕上。然后,当您进入场景视图时,您会看到有一个对象但由于某种原因它不可见。导致此问题的原因是什么?如何解决?

1 个答案:

答案 0 :(得分:1)

可能有很多问题但我会给你一个要检查的事项列表。

对象在主机/服务器中是否可见?摄像机位置/旋转是否可以正确查看衍生对象的位置?您是否使用Instantiate以与Single Player相同的方式生成对象,或者正确使用Unity Network的实例化方式?

这个Unity Networking Tutorial详细讨论了如何使用一个非常具体的例子来设置多人游戏。如果您是Unity Networking的新手,我建议您从本教程开始。以下显示如何在多人游戏中实例化对象:

[Command]
void CmdFire()
{
   // This [Command] code is run on the server!

   // create the bullet object locally
   var bullet = (GameObject)Instantiate(
        bulletPrefab,
        transform.position - transform.forward,
        Quaternion.identity);

   bullet.GetComponent<Rigidbody>().velocity = -transform.forward*4;

   // spawn the bullet on the clients
   NetworkServer.Spawn(bullet);

   // when the bullet is destroyed on the server it will automaticaly be destroyed on clients
   Destroy(bullet, 2.0f);
}

请注意,上述内容不足以通过网络实例化对象。为了执行上述代码,还必须设置其他内容。多人游戏与SinglePlayer非常不同,如果你不熟悉上面的代码,你一定要去查看Unity Networking Tutorial。

很少有事情需要注意:

  1. 必须使用[Command]
  2. 标记方法
  3. 方法名称必须以Cmd开头。
  4. 链接教程可能是Unity提供的 only 教程。 (Unity Networking因缺乏文档而臭名昭着。)