Unity3D 5.3.4的UGUI编程
2016-04-29 09:39
246 查看
引用
using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.Events;
创建类
public class UICreator : MonoBehaviour { private const int LayerUI = 5; void Start () { // 这里开始UGUI } }
创建Canvas,其它的UI都是基于它的对象
GameObject canvasObject = new GameObject("Canvas"); canvasObject.layer = LayerUI; canvasObject.transform.SetParent(parent); RectTransform canvasTrans = canvasObject.AddComponent<RectTransform>(); Canvas canvas = canvasObject.AddComponent<Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvas.pixelPerfect = true; CanvasScaler canvasScal = canvasObject.AddComponent<CanvasScaler>(); canvasScal.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScal.referenceResolution = new Vector2(800, 600); canvasObject.AddComponent<GraphicRaycaster>();
创建EventSystem,UI的事件监听由它完成
GameObject esObject = new GameObject("EventSystem"); esObject.transform.SetParent(canvasObject.transform); EventSystem esClass = esObject.AddComponent<EventSystem>(); esClass.sendNavigationEvents = true; esClass.pixelDragThreshold = 5; StandaloneInputModule stdInput = esObject.AddComponent<StandaloneInputModule>(); stdInput.horizontalAxis = "Horizontal"; stdInput.verticalAxis = "Vertical"; esObject.AddComponent<TouchInputModule>();
创建Panel,由于控制UI界面
GameObject panelObject = new GameObject("Panel"); panelObject.transform.SetParent(canvasObject.transform); panelObject.layer = LayerUI; RectTransform trans = panelObject.AddComponent<RectTransform>(); trans.anchorMin = new Vector2(0, 0); trans.anchorMax = new Vector2(1, 1); trans.anchoredPosition3D = new Vector3(0, 0, 0); trans.anchoredPosition = new Vector2(0, 0); trans.offsetMin = new Vector2(0, 0); trans.offsetMax = new Vector2(0, 0); trans.localPosition = new Vector3(0, 0, 0); trans.sizeDelta = new Vector2(0, 0); trans.localScale = new Vector3(0.8f, 0.8f, 1.0f); panelObject.AddComponent<CanvasRenderer>(); //添加一个图片 Image image = panelObject.AddComponent<Image>(); Texture2D tex = Resources.Load<Texture2D>("panel_bkg"); image.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
创建 Text(文本)控件
GameObject textObject = new GameObject("Text"); textObject.transform.SetParent(panelObject.transform); textObject.layer = LayerUI; RectTransform trans = textObject.AddComponent<RectTransform>(); trans.sizeDelta.Set(w, h); trans.anchoredPosition3D = new Vector3(0, 0, 0); trans.anchoredPosition = new Vector2(x, y); trans.localScale = new Vector3(1.0f, 1.0f, 1.0f); trans.localPosition.Set(0, 0, 0); textObject.AddComponent<CanvasRenderer>(); Text text = textObject.AddComponent<Text>(); text.supportRichText = true; text.text = message; text.fontSize = fontSize; text.font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font; text.alignment = TextAnchor.MiddleCenter; text.horizontalOverflow = HorizontalWrapMode.Overflow; text.color = new Color(0, 0, 1);
创建 buttons(按钮)控件
GameObject buttonObject = new GameObject("Button"); buttonObject.transform.SetParent(panelObject.transform); buttonObject.layer = LayerUI; RectTransform trans = buttonObject.AddComponent<RectTransform>(); SetSize(trans, new Vector2(w, h)); trans.anchoredPosition3D = new Vector3(0, 0, 0); trans.anchoredPosition = new Vector2(x, y); trans.localScale = new Vector3(1.0f, 1.0f, 1.0f); trans.localPosition.Set(0, 0, 0); buttonObject.AddComponent<CanvasRenderer>(); Image image = buttonObject.AddComponent<Image>(); Texture2D tex = Resources.Load<Texture2D>("button_bkg"); image.sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); Button button = buttonObject.AddComponent<Button>(); button.interactable = true; button.onClick.AddListener(eventListner);
转载于:https://my.oschina.net/uvvv/blog/667932
相关文章推荐
- 【Unity3D_UGUI速成班】——05.Rect Transform
- Unity3d UGUI 界面适配 实例解析 三种适配方式
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- Unity3d + UGUI 的多分辨率适配
- Unity3D开发之UGUI开发中按钮串位Bug修改
- 【Unity3D】Unity3D 4.x利用原生UGUI完成下拉列表DropDownList
- [unity3d]UGUI实现unity摇杆
- Unity3D Shader编程】之十二 可编程Shader初步 & 漫反射可编程Shader的实现
- Unity3D UGUI中的dropdown控件使用总结
- 【浅墨Unity3D Shader编程】之六 暗黑城堡篇: 表面着色器(Surface Shader)的写法(一)
- Unity3d 网络编程(三)(Unity3d内建网络简单服务器的建立)
- Unity3D -- (UGUI)Scrollbar
- Unity3D -- (UGUI)Canvas
- Unity3D编程 学习笔记之 FindObjectOfType
- Unity3D MineCraft 我的世界 UGUI屏幕自适应以及按钮事件传输
- Unity3D自学笔记——UGUI背包系统(七)物品的装备与卸下
- 【Unity3D】UGUI Button绑定事件的几种方法
- Unity3d 如何优化UGUI
- 【Unity3d】UGUI小贴士:使用不规则按钮
- 【Unity3D Shader编程】之十 深入理解Unity5中的Standard Shader 二 屏幕油画特效的实