大家好,我是孙广东。 转载请注明出处:http://write.blog.csdn.net/postedit/38922399
更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guide&view=my
如果您正在创建动态UI, 在游戏中UI元素在哪里出现、消失,或更改基于用户操作或其他操作,你可能需要做一个脚本,实例化新ui元素基于自定义的逻辑。
Creating a prefab of the UI element
为了能轻松地动态地实例化 UI元素,第一步是创建一个UI元素的类型的预置体,是你想要能够实例化的。设置用户界面元素,你想要它在场景中,看起来的方式,然后将该元素拖到Project View项目视图,使它变成一个预置体。
例如,一个按钮的预置体可能是一个游戏对象与Image图像组件和一个Button按钮组件和一个子游戏对象具有Text组件。您可以设置不同的根据您的需求。
你可能想知道为什么我们没有 API方法来创建各种类型的控件,包括视觉效果和一切。原因是这个方式有无限多的。如一个按钮可以setup。它可能是一个图像、文本或两者都有?也许甚至是多个图像?文本的字体、颜色、字体大小和对齐方式是什么?图像应使用什么精灵?通过让你创建一个预置和实例化的您可以设置它正是你想要的方式。如果您以后想要更改您的用户界面的外观和感觉您只可以更改预置,然后,它将会反映在您的 UI,包括动态创建用户界面。
Instantiating the UI element
UI元素的预置体都作为正常使用Instantiate方法来进行实例化。在实例化时设置UI元素的父对象是什么,它建议使用 Transform.SetParent方法设置和 worldPositionStays参数设置为 false。
Positioning the UI element
通常使用RectTransform定位 UI 元素。如果 UI元素是Layout Group布局组的子对象它将自动定位和定位步骤可以跳过。
定位一个Rect Transform时很有用,首先确定它已经或应该有拉伸的任何行为不。anchorMin和 anchorMax的属性并不相同时会发生拉伸行为。
对于非拉伸的 Rect Transform,将该位置设置最容易通过设置anchoredPosition和 sizeDelta属性。AnchoredPosition指定的pivot与anchors的位置。SizeDelta同样的大小是有的时候不拉伸的情况。
对于伸展的Rect Transform,它可以是简单设置使用的offsetMin和 offsetMax的属性的位置。OffsetMin属性指定的角的相对较低的左锚点矩形的左下角。OffsetMax属性指定的角的相对上部右锚点矩形的右上角。
Customizing the UI Element
如果你动态地实例化多个 UI元素,你就会希望他们都看起来一样不太可能,这样做。无论是在菜单中的按钮,库存或别的东西的条目,你可能想要的个别项目有不同的文本或图像,当互动时做不同的事情。
这是通过获得各种组件和改变它们的属性。从脚本中如何使用 UnityEvents工作,看看关于图像和文本组件的脚本引用,。