我正在尝试使用脚本生成预制件。这是代码,代码写在游戏面板中。
Network.Instantiate (ninjaPreFab, new Vector3 (-53, -34, 0), Quaternion.identity, 0);
但是,它不会在画布中产生。相反,它总是在画布之外产生,这意味着它不是画布的孩子,因此不会出现在游戏内部,因为我正在使用渲染 - 叠加相机。我已经尝试将画布的排序顺序设置为-1但仍然不起作用。我知道它产生了,因为编辑清楚地表明存在这个新对象。
答案 0 :(得分:3)
如果使用新的Unity UI,GUI元素必须是画布游戏对象的子元素,并且它们的坐标必须设置在画布的边界内,并且不要太靠近相机近剪裁平面(在视锥体内)它们在屏幕上可见。如果使用UI画布,请查看令人敬畏的Unity UI教程here。
根据您的代码片段,由于坐标值上的负号,您的UI元素看起来是不可见的。尝试将它们更改为正值,看看会发生什么。另外,将UI元素添加到画布,如下所示:
var newUIElement = Network.Instantiate (ninjaPreFab, new Vector3 (53, 34, 0), Quaternion.identity, 0);
newUIElement.transform.parent = canvas;
答案 1 :(得分:0)
问题解决了。我不应该在画布中生成游戏对象/精灵。 Canvas仅适用于UI。