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

今天做游戏时有个需求,游戏中需要给不同年份不同月份的奖牌制定不一样的非规则形状,其中形状为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列表中。");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月.末

你的鼓励就是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值