【Unity】Unity编辑器扩展,替代预制体上重复拖拽赋值

ops/2024/11/29 7:54:37/

今天做游戏时有个需求,游戏中需要给不同年份不同月份的奖牌制定不一样的非规则形状,其中形状为100个像素组成的不同图形,并且按照从1-100路径一个个解锁,所以需要全部手动放置。但是手动放置好后,发现再一个个挂到脚本上,及其繁琐且容易出错,于是写了一个脚本,让其自动将物体挂到脚本上的值中给其赋值。

下面是我的脚本需求的介绍

这是我的月份图形预制体结构,需要给这个Items的父节点上脚本中变量赋值
在这里插入图片描述

这是我的脚本变量,需要给这图片列表listImg 添加100个图片
在这里插入图片描述
在这里插入图片描述
需要注意的是这里列表变量只能定义,不能初始化,否则在用脚本赋值后,其值不能保存,又会变成初始化状态。

下面是直接AI生成的脚本,我简单改了一下,很简单,主要是记录一下部分组件的使用。
将其放在unity的Editor文件夹下即可,就可以在菜单栏中找到脚本使用入口。

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using UnityEngine.UI;public static class AddObjToScript
{[MenuItem("Tools/添加物体到脚本列表")]public static void AssignDirectChildrenToParent(){// 获取当前选中的物体GameObject targetObject = Selection.activeGameObject;if (targetObject == null){Debug.LogError("请先选择一个物体作为目标物体!");return;}// 获取目标的父节点Transform parentTransform = targetObject.transform.parent;if (parentTransform == null){Debug.LogError("目标物体没有父节点的父节点!");return;}// 获取MonthMapItem脚本组件MonthMapItem monthMapItem = parentTransform.gameObject.GetComponent<MonthMapItem>();if (monthMapItem == null){Debug.LogError("父节点上没有找到MonthMapItem脚本!");return;}// 获取目标物体的直接子节点List<Image> directChildren = new List<Image>();foreach (Transform childTransform in targetObject.transform){directChildren.Add(childTransform.gameObject.GetComponent<Image>());}// 赋值给MonthMapItem脚本的列表monthMapItem.listImg = directChildren;Debug.Log("已将 " + directChildren.Count + " 个直接子节点赋值给父节点的父节点的MonthMapItem脚本的listImg列表中。");}
}

http://www.ppmy.cn/ops/137601.html

相关文章

英语知识在线学习:Spring Boot网站设计

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

数据库(MySQL黑马)

基础篇 MySQL概述 数据库概述 数据库相关概念 主流的关系型数据库管理系统 MySQL数据库的安装与启动 下载&#xff1a;MySQL :: MySQL Community Downloads 安装步骤 MySQL―8.0.40超详细保姆级安装教程_mysql8.0.40安装教程-CSDN博客文章浏览阅读1k次。_mysql8.0.40安装教…

深入浅出剖析典型文生图产品Midjourney

2022年7月,一个小团队推出了公测的 Midjourney,打破了 AIGC 领域的大厂垄断。作为一个精调生成模型,以聊天机器人方式部署在 Discord,它创作的《太空歌剧院》作品,甚至获得了美国「数字艺术/数码摄影」竞赛单元一等奖。 这一事件展示了 AI 在绘画领域惊人的创造力,让人们…

力扣刷题TOP101:4.BM5 合并k个已排序的链表

目录&#xff1a; 目的 思路 复杂度 记忆秘诀 python代码 目的 [{1,2},{1,4,5},{6}] 合并成 {1,1,2,4,5,6} 思路 这个任务是将 k 个升序链表合并成一个升序链表。假设有一个代跑腿小哥&#xff0c;他的任务是从多个快递点取包裹并统一派送。每个快递点的包裹已经按派送距…

MongoDB 中设置登录账号密码可以通过以下步骤实现

1. 启用身份验证 默认情况下&#xff0c;MongoDB 不启用身份验证&#xff0c;需要修改配置文件启用。 打开 MongoDB 配置文件&#xff08;通常是 mongod.conf&#xff09;。 确保配置中有以下行&#xff08;或添加&#xff09;&#xff1a; security:authorization: enabled…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论&#xff0c;感谢大家支持&#xff01; 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

登录服务器的密钥对是什么?

‌登录服务器的密钥对‌是指由一对密钥组成的安全凭证&#xff0c;包括一个公钥和一个私钥。公钥通常存储在服务器上&#xff0c;而私钥由用户保管。用户通过私钥加密数据&#xff0c;而公钥用于解密&#xff0c;确保只有拥有私钥的用户才能访问服务器。 密钥对的用途和安全性…

MATLAB中Simulink的基础知识

Simulink是MATLAB中的一种可视化仿真工具&#xff0c; 是一种基于MATLAB的框图设计环境&#xff0c;是实现动态系统建模、仿真和分析的一个软件包&#xff0c;被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink提供一个动态系统建模、仿真和…