c# - Unity 生成预制件

标签 c# unity-game-engine

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

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/

相关文章:

c# - Xamarin Studio 中的奇怪异常堆栈跟踪

c# - 在不卡住 GUI 的情况下向大型数据绑定(bind) ObservableCollection 添加/删除许多项目

C# 如何以编程方式在控件之间切换

c# - 如何制作条件安装程序以在本地或联网计算机上查找或安装 SQL Server?

unity-game-engine - Cinemachine - 从代码中更改来自 CinemachineVirtualCamera 的 TrackedDolly 路径

c# - 我的 if 语句不起作用。我做错了什么?

java - Android - 失败 [INSTALL_FAILED_MISSING_SHARED_LIBRARY] 安装失败,输出如下 : pkg:/data/local/tmp/Package. apk

unity-game-engine - Unity 网格体碰撞变形

arrays - 使用 Json.NET 序列化 Vector2 数组

c# - 将元组字典中的值汇总到c#中的新字典