【发布时间】:2016-07-05 21:15:45
【问题描述】:
我有一个预制件,它有一个脚本组件作为 MonoBehaviour。该脚本有 3 个公共字段作为文本;在保存游戏对象并将其从场景中移除之前,它们在检查器中分配。
现在,如果我有一个 UI 元素(如面板),这可以正常工作。在预制件中定义的面板上的每个文本字段在运行时实例化预制件时仍会分配。
遗憾的是,这不适用于我制作的另一个预制件;这不是 UI 元素。在我的例子中,它是一个网格游戏对象,上面有各种组件(导航网格代理、胶囊对撞机、刚体、动画师等)
我相信这是因为在 UI 面板中,元素已经在游戏对象层次结构中,而当引用在不同的游戏对象上时; Unity 不会跟踪它们。
这意味着我必须始终在运行时通过代码添加我想在每个预制件上引用的元素,如果它们不是游戏对象本身的一部分?在这种情况下,我会避免公开我的引用,因为在这种情况下我不会使用检查器(这种类型的每个游戏对象都在运行时实例化)。
只是检查是否有任何其他解决方案可以解决这个问题。
【问题讨论】:
-
您始终可以使用
FindObjectWithName找到您的 UI 元素 -
是的,但这违背了公开字段并使用编辑器添加引用的目的。在我看来,当您创建预制件时,在编辑器中所做的一切都会持续存在;相反,它在大多数情况下都不起作用。
标签: unity3d