博客迁移

个人博客站点,欢迎访问,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

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

Unity之UGUI脚本自动生成相关推荐

  1. python生成yaml_使用python脚本自动生成K8S-YAML的方法示例

    1.生成 servie.yaml 1.1.yaml转json service模板yaml apiVersion: v1 kind: Service metadata: name: ${jarName} ...

  2. python生成yaml_使用python脚本自动生成K8S-YAML

    使用python脚本自动生成K8S-YAML 1.生成 servie.yaml 1.1.yaml转json service模板yaml apiVersion: v1 kind: Service met ...

  3. NSG2-一个很好用的ns2的tcl脚本自动生成软件

    NSG2-一个很好用的ns2的tcl脚本自动生成软件 来源:Linux社区 作者:fzxy002763 NSG2-一个很好用的ns2的tcl脚本自动生成软件,NSG2.rar,一个很好的java写的t ...

  4. Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告

    Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...

  5. Orcad下使用TCL脚本自动生成导线、网络标号和off page

    Orcad是一个很优秀的原理图工具,但是手工画批量导线和网络标号的时候(比如:RGB的信号线,DDR/FLASH的地址线),比较麻烦,修改也麻烦.所以这里介绍了使用TCL脚本自动生成导线.网络标号和o ...

  6. matlab之用m脚本自动生成exe文件

    matlab之用m脚本自动生成exe文件 文章目录 matlab之用m脚本自动生成exe文件 0.前言 1.生成exe文件分两种情况 2.生成文件在自己电脑上运行 3.生成文件在其他电脑上运行 0.前 ...

  7. [Unity编辑器] 根据图片自动生成动画

    根据自己的情况 仿照 雨松MOMO 写了一个自动生成动画的脚本 原地址 http://www.xuanyusong.com/archives/3243 代码: using UnityEngine; u ...

  8. UI架构设计五 — DTA文件使用脚本自动生成

    上一篇文章讲到,我们可以使用BmpCvST.exe软件手动把png文件生成对应的DTA文件. 如果是简单的生成几张图片,倒也无所谓,但是当你开发项目的时候,可能一个项目下来,会有几百张图片需要生成,所 ...

  9. httprunner接口测试脚本自动生成

    har2case可以将.har文件转化成yaml格式或者json格式的httprunner的脚本文件,生成.har格式文件可以借助fiddler或Charles抓包工具 友情提示: 录制脚本,只是一个 ...

最新文章

  1. mysql innodb引擎丢失_【MySQL】InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据...
  2. Symbian编程总结-图形图像篇-打开非Bitmap类型的图像
  3. 6-Qt6对象树及内存管理
  4. boost::local_time模块实现自纪元以来的秒数的测试程序
  5. java数据结构有哪些_java有哪些数据结构?
  6. ECOMP已经开源成功,这次ATT准备推动白盒路由操作系统DNOS
  7. leetcode第一刷_Binary Tree Zigzag Level Order Traversal
  8. hive分区用2个字段有何限制_[特性]Hive动态分区功能使用
  9. django restframwork 教程之authentication权限
  10. 查看虚拟机cpu型号_KVM虚拟机,如何设置虚拟机的CPU型号与物理机是一样的
  11. vue 自定义组件使用v-model
  12. 微信小程序云开发教程-微信小程序的JS基础-js文件基本结构与生命周期
  13. 求职者:推销自己的四大妙招
  14. js属性-map set
  15. CSDN-Markdown语法集锦
  16. IT界最伟大的十位人物
  17. TPTP测试项目的性能
  18. javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified
  19. 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘
  20. then里面调用 await

热门文章

  1. Python基础语法(自用)
  2. 如何取消Windows server 2016登录密码
  3. 医药工业洁净厂房配电系统设计与节能应用
  4. 八、 以太坊的杰出之作:智能合约
  5. arg是什么函数_不定参数函数实现var_arg系列的宏
  6. 梯度提升树(GBDT)算法超详细版本
  7. bootdo监控后台上传文件定期失效
  8. 向量和矩阵的求导公式
  9. 【大数据分析】k-cores,一种基于图数据结构的分解方法
  10. 在使用易路代理时,本地浏览器如何修改DNS 1.1.1.1?