Unity3D 5.3.4的UGUI编程

引用

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值