我是团结的新手。当我从内部脚本中实例化一个新的预制GameObject时,如下所示:
GameObject newArrow = (GameObject)Instantiate(arrowPrefab);
newArrow.transform.position = arrowSpawnTransform.position;
但这是在根层次结构中创建对象(而不是在NGUI内部" UI Root")。当我在UI-Root(NGUI)之外添加任何对象时,它会将其添加到远离相机的某个位置,同时具有巨大的尺寸。有人可以帮助我如何在" UI Root"下添加新创建的预制件。 ?
如果有人也让我知道与原生团结和NGUI相关的定位和缩放,那将是很棒的。我努力但不知道在哪里保留什么对象和大小,以便它按预期出现。我会感谢任何可以提供的帮助。谢谢!
编辑: 我找到了一种方法将新预制件置于" UI Root"直通: newArrow.transform.parent = gameObject.transform.parent; 实例化之后。
但是缩放仍然是巨大的。它比屏幕尺寸大很多倍。请帮我解决一下这个。我该怎么办?
答案 0 :(得分:3)
在NGUI中使用UI元素时,请勿使用Instantiate。使用NGUITools.AddChild(parent,prefab)。
答案 1 :(得分:0)
NGUI相对于场景中其他物体的比例相当微观。如果您查看UIRoot对象,您会注意到它的刻度是以千分之一米为单位测量的(默认对象分辨率为1通常表示一米)。这就是为什么当您实例化预制件并将其附加到UIRoot下的任何对象时,它相对于UIPanel的比例显得巨大。你可以手动将对象缩小到适当的大小,或者让NGUI通过使用NGUITools.AddChild(parent,prefab)为你做(如Dover8所示)。事实上,这是正确的方法。不要尝试手动完成。结果将无法预测,并可能导致组件的不当行为。以下是关于此主题的Tasharen论坛的链接:http://www.tasharen.com/forum/index.php?topic=779.0
定位有点复杂。一切都与锚相关。锚点位置是父对象(通常是面板)和目标(通常是某种形式的小部件,例如精灵或标签)之间的关系。它们由相对于面板边缘(或父对象)的四个值控制,相对于目标边缘的右,左,底和顶部(根据位置而变化)。这些中的每一个都由整数值(以像素为单位)修改,该整数值修改目标相对于父级的维度。 NGUI中包含许多示例。我建议你看看他们。特别要注意例1 - 锚点。我从研究这些例子中学到了很多东西,但它们并没有真正涵盖NGUI的全部功能,但它们是一个很好的起点。