当我尝试在多人游戏中生成时,我的游戏对象不可见

My Game object is not visible when I try and spawn in multiplayer

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

可能有很多问题,但我会给你一份清单,列出需要检查的事项。

对象在主机/服务器中可见吗?相机位置/旋转是否可以正确查看生成对象的位置?您是否以与单人游戏相同的方式使用 Instantiate 生成对象,或正确使用 Unity Network 的实例化方式?

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

[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);
}

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

注意事项:

  1. 方法必须用 [Command] 标记
  2. 方法名称必须以 Cmd.
  3. 开头
  4. 链接教程可能是Unity提供的唯一教程。 (Unity Networking 因其缺乏文档而声名狼藉。)