我正在尝试使用脚本生成预制件。这是代码,代码写在游戏面板里面。
Network.Instantiate (ninjaPreFab, new Vector3 (-53, -34, 0), Quaternion.identity, 0);
但是,它并未在 Canvas 内生成。相反,它总是在 Canvas 外部生成,这意味着它不是 Canvas 的子级,因此当我使用渲染 - 覆盖相机时不会出现在游戏中。我尝试将 Canvas 的排序顺序设置为-1,但仍然不起作用。我知道它产生了,因为编辑器清楚地显示有这个新对象。
最佳答案
如果使用新的 Unity UI,GUI 元素必须是 Canvas 游戏对象的子元素,并且它们的坐标必须设置在 Canvas 的边界内,并且不能太靠近相机近剪裁平面(在视锥体内),如果它们将在屏幕上可见。如果使用 UI Canvas ,请查看精彩的 Unity UI 教程 here .
根据您的代码片段,由于坐标值上的负号,您的 UI 元素似乎是不可见的。尝试将它们更改为正值,看看会发生什么。另外,将 UI 元素设置为 Canvas 的父级,如下所示:
var newUIElement = Network.Instantiate (ninjaPreFab, new Vector3 (53, 34, 0), Quaternion.identity, 0);
newUIElement.transform.parent = canvas;
关于c# - Unity 生成预制件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30414929/