Unity 5.2.1 UGUI 控件使用
2015-12-29 18:53
627 查看
1、Canvas
2 button绑定事件
3 text
4 Image
5 Toggle
6 Sclider
7 Droupdown
8 InputField 输入文本框
9 Scroll View
Render Mode Screen Space - Overlay 这种渲染模式下,在场景中UI元素被渲染在屏幕上。如果屏幕大小改变或更改了分辨率,画布上将自动更改大小,以很好的相匹配。 Screen Spcae - Camera 这是类似于Screen Space - Overlay,但在这个渲染模式下,画布被放置在指定的Camera前的一个给定的距离上。通过这个指定的摄像机UI元素被呈现出来,这意味着Camera settings会影响到UI的显示。如果将相机设置为Perspective,UI元素将在perspective下被呈现,perspective失真数可以被控制通过设置观看的Camera Field大小。如果屏幕调整的大小或更改分辨率或相机锥范围变化,画布上将自动更改大小,以及相匹配。 World Space 此渲染模式下使画布在场景中表现任何其他对象。可以手动使用其Rect Transform来设置画布的大小,和UI元素将会呈现在其他对象的前面或后面在基于 3D 配置的场景中。这是对于所有Ui是有用的,他们是world space的一部分,有时也被引用为剧情接口。
2 button绑定事件
4种方法 方式一:继承基础接口实现 步骤一:创建ClickObject脚本。继承MonoBehaviour和IPointerClickHandler。 步骤二:实现public void OnPointerClick(PointerEventData eventData)方法: 步骤三:创建一个名为Panel_IPointer的空对象。并且将ClickObject脚本附加到对象上。 步骤四:启动,并点击Panel_IPointer对象。 方式二:Unity3D编辑器操作设置实现 步骤一:创建一个C#脚本。在脚本中添加一个public方法。 步骤二:创建一个命名为Empty的UI对象,用于接收和响应点击事件。创建一个名为Panel的UI对象,用于触发点击事件。 步骤三:Panel对象添加EventTrigger组件," Add New" -> 选择" PointerClick"。将Empty对象拖拽到触发者位置。然后点击"No Function"选择我们写在Test脚本中的OnTestClick事件。 步骤四:设置好这些之后。我们的事件触发就已经完成了。运行Unity3D。点击窗口中Panel对象。 方式三:程序动态设置实现 using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class ScriptControl : MonoBehaviour { // Use this for initialization void Start () { var trigger = transform.gameObject.GetComponent<EventTrigger>(); if (trigger == null) trigger = transform.gameObject.AddComponent<EventTrigger>(); // 实例化delegates trigger.delegates = new List<EventTrigger.Entry>(); // 定义需要绑定的事件类型。并设置回调函数 EventTrigger.Entry entry = new EventTrigger.Entry(); // 设置 事件类型 entry.eventID = EventTriggerType.PointerClick; // 设置回调函数 entry.callback = new EventTrigger.TriggerEvent(); UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll); entry.callback.AddListener(callback); // 添加事件触发记录到GameObject的事件触发组件 trigger.delegates.Add(entry); } // Update is called once per frame void Update () { } public void OnScriptControll(BaseEventData arg0) { Debug.Log("Test Click"); } } 方式四:使用Button我们可以实现动态的变更鼠标绑定的点击事件 using UnityEngine; using System.Collections; using UnityEngine.UI; public class BtnControl : MonoBehaviour { // Use this for initialization void Start () { var button = transform.gameObject.GetComponent<Button>(); if (button != null) { button.onClick.RemoveAllListeners(); button.onClick.AddListener(TestClick); } } public void TestClick() { Debug.Log("Test Click. This is Type 4"); } // Update is called once per frame void Update () { } }
3 text
实现语句不通颜色 支持code <color=#00ff00>zxxxczvc</color> 加在内容就可以 Text text = this.GetComponent<Text> (); text.text = "<color=#ff0000>aa</color><color=#00ff00>bb</color><color=#0000ff>cc</color>";
4 Image
获取Resources路径下的图片 ,作为sprite的路径 var image = this.gameObject.GetComponent<Image> (); Texture2D texture = (Texture2D)Resources.Load("btUP" ,typeof(Texture2D)); if (texture == null) { Debug.Log("sp is null"); } Sprite sp = Sprite.Create (texture, new Rect(0,0,20,20),new Vector2(0.5f,0.5f));
5 Toggle
绑定点击事件 void Start () { mToggle = this.gameObject.GetComponent<Toggle> (); if (mToggle != null) { mToggle.onValueChanged.AddListener(ClickToggle); } } public void ClickToggle(bool isOn){ Debug.Log (mToggle.name+ " is "+ isOn); } 设置Toggle组 新建gameobject 并且添加 Toggle Group 组件 将gameobject拖到每个Toggle中的Group中,现在的Toggle为单选按钮 通常为新建Panel将Toggle拖到Panel作为子物体,将Panel拖到每个Toggle中的Group属性中
6 Sclider
private Slider mSlider = null; // Use this for initialization void Start () { mSlider = this.gameObject.GetComponent<Slider> (); if (mSlider != null) { mSlider.onValueChanged.AddListener(SlideTheSlider); } } public void SlideTheSlider(float value){ Debug.Log (value); }
7 Droupdown
private Dropdown mDropdown = null; // Use this for initialization void Start () { mDropdown = this.gameObject.GetComponent<Dropdown> (); //新建每一项 Dropdown.OptionData optionData = new Dropdown.OptionData (); optionData.text = "1"; Dropdown.OptionData optionData1 = new Dropdown.OptionData (); optionData1.text = "2"; Dropdown.OptionData optionData2 = new Dropdown.OptionData (); optionData2.text = "3"; 将新建项添加到下拉菜单中 mDropdown.options.Add (optionData); mDropdown.options.Add (optionData1); mDropdown.options.Add (optionData2); 绑定回调 mDropdown.onValueChanged.AddListener (ClickDropdown); 下拉菜单的标题 mDropdown.captionText.text = "234"; } private void ClickDropdown(int index){ Debug.Log (mDropdown.options[index].text); }
8 InputField 输入文本框
9 Scroll View
新建 Scroll View 包括ViewPort 以及 Content ViewPort 主要包括 Mask (遮蔽)组件 以及 image组件 Content 可以新建 Panel 代替 新建Panel 添加 Grid Layout Group 组件 设置 Cell Size 属性与 Spacing 属性 在Panel 中添加 N 张image 将 Panel 添加到Scroll View中的Content属性 将ViewPort 添加到Scroll View中的Viewport属性 代码动态添加子项 GameObject gameObject = Instantiate(Resources.Load<GameObject>("Prefabs/ScrollViewItem"),mScrollViewItemPostion,transform.rotation) as GameObject; gameObject.transform.SetParent (this.gameObject.GetComponent<ScrollRect> ().content.transform);
相关文章推荐
- unity实现多点触控代码
- 在Unity中实现动画的正反播放代码
- unity实现摄像头跟随
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- [软件资讯]Unity已支持将3D游戏导出成Flash
- Unity 武器拖尾效果
- unity常见问题之20题
- Unity3D动画存储插件
- unity 赛车相机跟随物体移动
- Unity 预编译宏
- Unity AssetDatabase类
- VS2013中 命名空间“UnityEngine”中不存在类型或命名空间名称“UI”。是否缺少程序集引用?
- unity 实现炸弹人放炸弹后只进不出的一种方法
- Unity3D占用内存太大的解决方法
- 【Unity】安卓项目使用带有资源Jar包SDK的打包方法
- Unity2d 5.1 弱联网游戏制作 (一)场景创建、添加组件、精灵移动、主摄像机跟随