【问题标题】:Unity Spawning PrefabUnity 生成预制件
【发布时间】:2015-05-23 16:19:37
【问题描述】:

我正在尝试使用脚本生成预制件。这是代码,代码写在游戏面板里面。

Network.Instantiate (ninjaPreFab, new Vector3 (-53, -34, 0), Quaternion.identity, 0);

但是,它不会在画布内生成。相反,它总是在画布之外产生,这意味着它不是画布的子对象,因此在我使用渲染 - 覆盖相机时不会出现在游戏中。我尝试将画布的排序顺序设置为 -1,但它仍然不起作用。我知道它产生了,因为编辑器清楚地表明存在这个新对象。

【问题讨论】:

标签: c# unity3d


【解决方案1】:

如果使用新的 Unity UI,GUI 元素必须是画布游戏对象的子元素,并且它们的坐标必须设置在画布的边界内,并且不能太靠近相机近剪裁平面(在视锥内),如果它们将在屏幕上可见。如果使用 UI 画布,请查看很棒的 Unity UI 教程here

根据您的代码 sn-p,由于坐标值上的负号,您的 UI 元素似乎是不可见的。尝试将它们更改为正值,看看会发生什么。此外,像这样将 UI 元素作为画布的父元素:

var newUIElement = Network.Instantiate (ninjaPreFab, new Vector3 (53, 34, 0), Quaternion.identity, 0);
newUIElement.transform.parent = canvas;

【讨论】:

  • 这只会确保生成 ui 元素的人会看到新的 ui 元素。例如,当服务器生成它时,只有服务器能够查看 ui 元素,客户端无法看到它。
  • 问题已解决。我不应该在画布内生成游戏对象/精灵。 Canvas 仅适用于 UI。
【解决方案2】:

问题解决了。我不应该在画布内生成游戏对象/精灵。 Canvas 仅适用于 UI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多