Unity之UGUI脚本自动生成

在做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

下载链接如有失效,请即时联系
以上知识分享,如有错误,欢迎指出,共同学习,共同进步

猜你喜欢

转载自blog.csdn.net/qq_26999509/article/details/76945558