IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 编辑器扩展 -> 正文阅读

[开发工具]编辑器扩展

问题:编写代码时会有很多UI的查找、事件监听等经常重复编写的代码。因此通过编辑器去自动初始化生成代码。

目的:开发效率的提高

首先,根据需求,准备预制体……废话不多开始心路历程:

  1. 确定生成脚本Demo:
    public static string UIClass =
            @"using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class #类名# : MonoBehaviour
    {
        #预设成员变量#
    
        void Start()
        {
           #查找#
           #事件#
        }
        #事件方法#
    }";
  2. 根据选中准备好的预制体,准备并替换其中的‘#*#’内容:
        string 类名;
        string 成员变量;
        string 查找成员;
        string 事件;
        string 事件方法;
        public static void GetObjsDefintion(Transform tf)
        {
            类名 = tf.name+"Script";
            if (tf != null)
            {
                for (int i = 0; i < tf.childCount; i++)
                {
                    //根据命名格式筛选出所需要记录的成员
                    if (tf.GetChild(i).name.StartsWith("R_"))
                    {
                        if (tf.GetChild(i).name.EndsWith("_Text"))
                        {                    
                            //根据命名格式去逐个递归查找路径来查找每一个成员变量
                            成员变量 += "private Text " + name + ";\n     ";
                            查找成员 += name + " = transform.Find(\"" + "递归查找路径" + "\").GetComponent<Text>(); \n     ";
                        }
                        else if (tf.GetChild(i).name.EndsWith("_Button"))
                        {
                            //需要事件监听的Button等添加事件以及事件方法
                            事件 += name + ".onClick.AddListener("+name+"Listener);";
                            事件方法 += "private void "+name+"Listener(){}";
                        }else{
                            //别的需要的内容,此处省略一万行代码
                        }
                    }
    
                    if (tf.GetChild(i).childCount > 0 )
                    {
                        //递归遍历所有子物体
                        GetObjsDefintion(tf.GetChild(i));
                    }
                }
            }
        }
        
        string classStr = PrefabToScriptTemplate.UIViewClass;
        classStr = classStr.Replace("#类名#", 类名);
        classStr = classStr.Replace("#预设成员变量#", 成员变量);
        classStr = classStr.Replace("#查找#", 查找成员);
        classStr = classStr.Replace("#事件#", 事件);
        classStr = classStr.Replace("#事件方法#", 事件方法);
  3. 确定生成脚本的路径、并生成:

            string scriptPath = Application.dataPath + "/Scripts/" + 类名 + ".cs";
            FileStream file = new FileStream(scriptPath, FileMode.CreateNew);
            StreamWriter filew = new StreamWriter(file, System.Text.Encoding.UTF8);
            filew.Write(classStr);
            filew.Flush();
            filew.Close();
            file.Close();



    链接: https://pan.baidu.com/s/1DRJyQhBNrwjoHZnpS51Wyg 提取码: q188

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 16:10:12  更:2021-12-14 16:12:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/24 21:27:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计