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

Unity编辑器扩展:UI绑定复制工具

在UI开发中,当我们需要为相似预制体快速复制字段绑定时,手动操作既繁琐又容易出错。本文将介绍一个高效解决这一痛点的Unity编辑器扩展工具。(适用于换皮活动)

这是一个UI环比开发的绑定复制工具,主要功能是将公共字段和[SerializeField]标记的引用字段从一个MonoBehaviour组件复制到另一个组件。它特别适用于以下场景:

  1. 替换UI界面风格时复用绑定逻辑
  2. 在相似组件之间快速转移引用
  3. 避免重复拖拽引用字段的操作

使用方式

  1. 通过 Tools > UI Binding Copier 打开窗口
  2. 拖拽源组件(已配置好绑定的组件)
  3. 拖拽目标组件(需要接收绑定的组件)
  4. 点击 Copy Bindings 按钮完成复制
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;public class BindingCopier : EditorWindow
{private MonoBehaviour sourceComponent;private MonoBehaviour targetComponent;[MenuItem("Tools/UI Binding Copier")]public static void ShowWindow(){GetWindow<BindingCopier>("Binding Copier");}void OnGUI(){GUILayout.Label("Copy UI Bindings Between Components", EditorStyles.boldLabel);sourceComponent = (MonoBehaviour)EditorGUILayout.ObjectField("Source Component",sourceComponent,typeof(MonoBehaviour),true);targetComponent = (MonoBehaviour)EditorGUILayout.ObjectField("Target Component",targetComponent,typeof(MonoBehaviour),true);if (GUILayout.Button("Copy Bindings")){if (sourceComponent != null && targetComponent != null){CopyBindings(sourceComponent, targetComponent);EditorUtility.DisplayDialog("Success", "Bindings copied successfully!", "OK");}else{EditorUtility.DisplayDialog("Error", "Please assign both source and target components", "OK");}}EditorGUILayout.HelpBox("这个工具可以把公共字段和[SerializeField]引用从一个组件复制到另一个组件" +"当组件具有相似的字段名称和类型时,效果最佳(C#换皮用)",MessageType.Info);}public static void CopyBindings(MonoBehaviour source, MonoBehaviour target){if (source == null || target == null) return;SerializedObject sourceSerialized = new SerializedObject(source);SerializedObject targetSerialized = new SerializedObject(target);SerializedProperty iterator = sourceSerialized.GetIterator();bool enterChildren = true;while (iterator.NextVisible(enterChildren)){enterChildren = false;if (iterator.propertyType == SerializedPropertyType.ObjectReference){string propertyName = iterator.name;SerializedProperty targetProperty = targetSerialized.FindProperty(propertyName);if (targetProperty != null &&targetProperty.propertyType == SerializedPropertyType.ObjectReference &&targetProperty.objectReferenceValue == null) // Optional: only overwrite null values{targetSerialized.CopyFromSerializedProperty(iterator);}}}targetSerialized.ApplyModifiedProperties();EditorUtility.SetDirty(target);}
}
#endif

效果如下所示
在这里插入图片描述
只需要将预制体上的组件拖动过去 就能快速的复用绑定关系

适用场景:适用于换皮活动C#逻辑大致相似但需要单独提出逻辑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/257538.html

相关文章:

  • AI绘画工具实测:Stable Diffusion本地部署指
  • 【目标检测】图像处理基础:像素、分辨率与图像格式解析
  • UE5 开发遇到的bug整理
  • EEG分类攻略2-Welch 周期图
  • 开发上门按摩APP应具备哪些安全保障功能?
  • MySQL 事务实现机制详解
  • 半导体行业中的专用标准产品ASSP是什么?
  • 简析自动驾驶产业链及其核心技术体系
  • 前端跨域解决方案(7):Node中间件
  • 人机融合智能 | 人智交互的神经人因学方法
  • 常用终端命令(Linux/macOS/bash 通用)分类速查表
  • 【机器学习深度学习】机器学习核心的计算公式:wx+b
  • XSD是什么,与XML关系
  • 麒麟系统上设置Firefox自动化测试环境:指定Marionette端口号
  • OpenHarmony中默认export 添加环境变量
  • JVM线上调试
  • 端到端数据标注方案在自动驾驶领域的应用优势
  • 第九章:LORA
  • 小触控APP:高效自动连点,解放双手
  • 如何预测与控制多项目中的人员负载过高
  • 什么是 Sentinel?
  • Bug闭环解决之道:主流Bug追踪工具优劣对比
  • 把握技术风口,链接优质资源——2025深圳国际全触与显示展重磅推出六大新技术展区,布局新蓝海
  • 【第二章:机器学习与神经网络概述】03.类算法理论与实践-(2)朴素贝叶斯分类器
  • 数据集笔记:中国公交路线线路
  • 纯血HarmonyOS5 打造小游戏实践:扫雷(附源文件)
  • 基于 Spark 实现 COS 海量数据处理
  • Java底层原理:深入理解类加载机制与反射
  • 运维打铁: Windows 服务器基础运维要点解析
  • 2025年- H89-Lc197-- 5. 最长回文子串(多维动态规划)--Java版