当前位置: 首页 > news >正文

unity自动引用生成

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;/// <summary>
/// 模板脚本生成
/// </summary>
public class ScriptCreater : EditorWindow
{#region 生成CS脚本引用//按照前缀命名的就会自动生成引用private static Dictionary<string, string> compDic = new Dictionary<string, string>{{"rect_", "RectTransform"},{"btn_", "Button"},{ "text_","Text"},{"wImg_", "Image"},        };private static Dictionary<string, string[]> nameOfPath = new Dictionary<string, string[]>();private static string GenerateClassName;//类名private static void GenerateMainClass(){string mainPath = $"{Application.dataPath}/Scripts/Example/{GenerateClassName}.cs";if (!File.Exists(mainPath)){File.Create(mainPath).Close();}
#if UNITY_EDITORUnityEditor.AssetDatabase.Refresh();
#endifFile.WriteAllText(mainPath,@"using UnityEngine;
using System;
using UnityEngine.UI;
public partial class _D_CLASSNAME 
{protected override void OnCreate(){}}
".Replace("_D_CLASSNAME", GenerateClassName));
#if UNITY_EDITORUnityEditor.AssetDatabase.Refresh();
#endifGeneratePartClass();}private static void GeneratePartClass(){string fielddata = "";string referdata = "";foreach (var item in nameOfPath){fielddata += $"\tprivate {item.Value[1]} {item.Key};\n";referdata += $"\t\t{item.Key} = transform.Find(\"{ item.Value[0] }\").GetComponent<{item.Value[1]}>();\n";}referdata += "\t\tAfterInitRef();";string baseTemp = @"using System;
using UnityEngine;
using UnityEngine.UI;public partial class _D_CLASSNAME 
{
FILEDLISTprotected override void InitComp(){
REFERENCE}
}
";string info = "";info = baseTemp.Replace("FILEDLIST", fielddata);info = info.Replace("_D_CLASSNAME", GenerateClassName);info = info.Replace("REFERENCE", referdata);string aprtPath = $"{Application.dataPath}/Scripts/Game/Runtime/Logic/Dialog/Partial/{GenerateClassName}.cs";if (!File.Exists(aprtPath)){File.CreateText(aprtPath).Close();
#if UNITY_EDITORUnityEditor.AssetDatabase.Refresh();
#endif}File.WriteAllText(aprtPath, info);
#if UNITY_EDITORUnityEditor.AssetDatabase.Refresh();
#endif}[MenuItem("GameObject/UI组件引用生成", false, 1)][MenuItem("Assets/UI组件引用生成")]public static void UGUIPrefabGenerateCS(){nameOfPath.Clear();UnityEngine.Object obj = Selection.activeObject;if (obj == null){Debug.LogError("请选择预设");return;}GameObject prefab = obj as GameObject;List<string> types = new List<string>();string baseName = prefab.name;GenerateClassName = baseName;foreach (Transform item in prefab.GetComponentsInChildren<Transform>(true)){Debug.Log(item.name);foreach (var v in compDic){if (item.name.StartsWith(v.Key)){string fieldName = "comp_" + item.name;string path = "";var curgo = item;types.Clear();while (curgo != null){if (curgo.parent != null) types.Add(curgo.name);curgo = curgo.parent;}for (int i = types.Count - 1; i >= 0; i--){path += (types[i] + (i != 0 ? "/" : ""));}nameOfPath.Add(fieldName, new string[] { path, v.Value });}}}Debug.Log($"nameOfPath.Count = {nameOfPath.Count}");GenerateMainClass();}#endregion
}

思路:按照规范命名的才会生成引用

相关文章:

unity自动引用生成

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using UnityEditor; using UnityEngine; using UnityEngine.UI;/// <summary> /// 模板脚本生成 /// </summary> public class ScriptCreater : EditorW…...

【Linux系统】线程互斥与同步

目录 一.几个概念 二.线程互斥 1.定义并初始化锁 2.加锁 3.解锁 4.销毁锁 三.互斥锁的本质 1.xchg的原子性 2.加锁的过程 3.解锁的过程 四.可重入VS线程安全 五.死锁 1.死锁的概念 2.具体实例 3.死锁产生的四个必要条件 4.解决或避免死锁 六.线程同步 七.…...

武汉星起航引领跨境电商新潮流,深耕亚马逊打造全方位合作新模式

在全球化的浪潮下&#xff0c;跨境电商已成为连接各国市场的重要桥梁&#xff0c;为无数企业带来了前所未有的发展机遇。在这一领域&#xff0c;武汉星起航电子商务有限公司以其独特的战略眼光和实战经验&#xff0c;成为引领行业发展的佼佼者。公司自2017年起便深耕亚马逊平台…...

GateWay路由规则

Spring Cloud GateWay 帮我们内置了很多 Predicates功能&#xff0c;实现了各种路由匹配规 则&#xff08;通过 Header、请求参数等作为条件&#xff09;匹配到对应的路由 1 时间点后匹配 server:port: 8888 spring:application:name: gateway-servicecloud:nacos:discovery:…...

shell脚本基础改造

一、基础的shell脚本格式 #!/bin/bash 2 #3 #********************************************************************4 #Author: LJH5 #QQ: 2…...

静态综合实验

一&#xff0c;1.搭建拓扑结构并启动。 2.根据题意得该图需要14个网段&#xff0c;根据192.168.1.0/24划分子网段&#xff0c;如下&#xff1a; 划分完如图所示&#xff1a; 二、配置IP地址 R1路由器&#xff1a; 1.进入系统视图并改名. 2.接口配置IP地址&#xff1a…...

Spring Web MVC入门(6)

应用分层 在开发的过程中, 我们会发现, 程序的代码有时会很"杂乱", 如果后面的项目更大了, 那就会更加地杂乱无章(文件乱, 代码内容乱). 也基于此, 接下来让我们来学习一下应用分层. 也类似于公司的组织架构 公司初创阶段, 一个人身兼数职, 既做财务, 又做人事,还有…...

muduo异步日志

muduo异步日志实现 陈硕老师的muduo网络库的异步日志的实现&#xff0c;今晚有点晚了&#xff0c;我明晚再把这个异步日志抽出来&#xff0c;作为一个独立的日志库。 所在文件 AsyncLogging.cc AsyncLogging.h LogFile.h LogFile.cc CountDownLatch.h CountDownLatch.cc…...

在智慧能源的发展历程中,哪些技术的出现起到了关键性的作用?

智慧能源作为一种全新的能源发展理念&#xff0c;正逐渐成为能源领域的热门话题。在智慧能源的发展历程中&#xff0c;有许多技术的出现起到了关键性的作用&#xff0c;推动了智慧能源的快速发展。 一、物联网技术 物联网技术使得能源设备可以实现互联互通&#xff0c;通过传感…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(十三)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十二&#xff09; 下一篇&#xff1a; 待续 51、sqlite3_stmt_scanstatus_reset sqlite3_stmt_scanstatus_reset 函数用于重置指定语句对象最近一次执行的 WHER…...

扫雷(蓝桥杯,acwing)

题目描述&#xff1a; 扫雷是一种计算机游戏&#xff0c;在 2020 世纪 80 年代开始流行&#xff0c;并且仍然包含在某些版本的 Microsoft Windows 操作系统中。 在这个问题中&#xff0c;你正在一个矩形网格上玩扫雷游戏。 最初网格内的所有单元格都呈未打开状态。 其中 M个…...

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL&#xff0c;再通过 sudo port load 命令启动了 MySQL Server&#xff0c;此刻却发现使用 Navicat 之类的 GUI 软件无法连接&#xff0c;始终返回无法连接到 127.0.0.1 服务器。这是一个小坑&#xff0c;因为他默认使用了 So…...

Semi-supervised Open-World Object Detection

Semi-supervised Open-World Object Detection 摘要1 介绍2.准备工作提出的SS-OWOD问题设置2.1 基础架构3 方法3.1整体架构摘要 传统的开放世界对象检测(OWOD)问题设置首先区分已知和未知类别,然后在后续任务中引入标签时逐步学习未知对象。然而,当前的OWOD公式在增量学习…...

C语言实现射击小游戏

以下是一个简单的C语言射击小游戏的实现示例。这个游戏中&#xff0c;玩家控制一个飞船&#xff0c;敌方飞船会随机出现并向玩家移动。如果玩家的飞船与敌方飞船相撞&#xff0c;玩家就失去一条生命&#xff0c;代码如下&#xff1a; #include <stdio.h> #include <s…...

c++11 标准模板(STL)本地化库 - std::islower(std::locale) 检查字符是否被本地环境分类为小写

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 检查字符是否被本地环境分类为小写 std::islower(std::locale) template&…...

粘度指数改进剂市场需求增长 为润滑油添加剂细分产品

粘度指数改进剂市场需求增长 为润滑油添加剂细分产品 粘度指数改进剂是一种油溶性高分子聚合物&#xff0c;主要用于提高润滑油粘度以及粘度指数。粘度指数改进剂具有稠化能力强、抗磨性好、热稳定性好等优势&#xff0c;可添加于液压油、内燃机油以及齿轮油等油品中。 …...

LabVIEW柴油机安保监控系统

LabVIEW柴油机安保监控系统 随着航运业的快速发展&#xff0c;确保船舶柴油机的安全稳定运行变得尤为重要。船舶柴油机故障不仅会导致重大的经济损失&#xff0c;还可能危及人员安全和环境。设计并开发了一套基于LabVIEW平台的柴油机安保监控系统&#xff0c;旨在通过实时监控…...

实测国内AI大模型问答效果

随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型。按照github工程awesome-LLMs-In-China所列举的&#xff0c;现如今国内AI大模型已达243个&#xff0c;比较著名的有文心一言、通义千问等。各大应用也开始内置AI玩法&#xff0c;如抖音的AI特效。下…...

不得不等待的无奈 -《葡萄成熟时》

恋上一个人便是撒下一颗葡萄种子&#xff0c;你可能会坚持&#xff0c;但不一定会结果&#xff0c;收获&#xff08;在一起&#xff09;。 更有可能得到的是枯枝烂叶&#xff08;ta的离开&#xff09;。 就算你再努力&#xff0c;再用心去栽培&#xff08;为ta付出&#xff0…...

【Python】Python中装饰器和魔法方法的区别

在Python中&#xff0c;装饰器&#xff08;Decorators&#xff09;和魔法方法&#xff08;Magic Methods&#xff09;是两种不同的高级特性&#xff0c;分别服务于不同的目的。 装饰器 (Decorators) 装饰器是一种强大的工具&#xff0c;它可以修改或增强函数、方法或类的行为…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...