博客迁移
个人博客站点,欢迎访问,www.jiingfengji.tech
正文
在做UI开发工作中,往往会有很多重复工作,比如用FindChild找可交互的ui呀,比如给这些ui加Listener等,那么这里提供一种思路,通过给UI中需要加交互事件的ui物体加上标记脚本,然后就可以根据这些标记得出相对于UIRoot的路径,得到路径就可以通过FindChild得到交互UI物体,然后给他们加上事件监听即可。
先定义一个枚举
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum UIType
{
UIRoot,
Transform,
Image,
RawImage,
Button,
Toggle,
Slider,
Scrollbar,
Dropdown,
InputField,
ScrollRect,
}
然后上一个效果图来给UI物体加标记
从图中可以看出,加完标记之后,生成代码。
先看示例的UIDialog
其中图中两一个Image,一个InputFiel,一个Button,一个Toggle
生成的代码如下:
using UnityEngine;
using UnityEngine.UI;
using System;
public class TestDialog : MonoBehaviour
{
private Image m_Image = null;
private InputField m_UserNameInputField = null;
private Button m_CloseButton = null;
private Toggle m_SexToggle = null;
void Awake()
{
m_Image = transform.FindChild("Image").GetComponent<Image>();
m_UserNameInputField = transform.FindChild("Image/UserNameInputField").GetComponent<InputField>();
m_CloseButton = transform.FindChild("CloseButton").GetComponent<Button>();
m_SexToggle = transform.FindChild("SexToggle").GetComponent<Toggle>();
}
void Start()
{
InitUIEvent();
}
private void InitUIEvent()
{
m_UserNameInputField.onEndEdit.AddListener(OnUserNameInputFieldEndEdit);
m_CloseButton.onClick.AddListener(OnCloseButtonClick);
m_SexToggle.onValueChanged.AddListener(OnSexToggleValueChanged);
}
private void OnUserNameInputFieldEndEdit(string arg0)
{
throw new NotImplementedException();
}
private void OnCloseButtonClick()
{
throw new NotImplementedException();
}
private void OnSexToggleValueChanged(bool arg0)
{
throw new NotImplementedException();
}
}
生成代码的逻辑比较长,就不放出来了,原理就是按照规范拼StringBuilder,包括变量名前缀,函数名规范等,以及插入等长度的空格代替tab、还有换行使得代码对其等等。
####这个只是提供一种思路,Demo以及源码会放在下面,大家有兴趣可以参考一下,转载请注明原文地址。
Demo源码下载地址:
链接:http://pan.baidu.com/s/1i4YbIML 密码:uyg9
下载链接如有失效,请即时联系
以上知识分享,如有错误,欢迎指出,共同学习,共同进步