@^@ 之前做项目曾经遇到一个问题,ui美术给了我大量的序列帧图片,当时不知道如何快速批量地将资源赋值(拖拽)到inspector面板上,手动拖拽显然非常痛苦。当然有一种动态加载资源的方法 Resources.LoadAll或者 Resources.Load,但是我想在游戏未运行前提前把图片拖拽到inspector面板上,并且在我更换资源的时候也能够通过一键解决,后面我找到了以下的解决方案。
1.新建一个脚本文件 EditorLoader.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; [ExecuteInEditMode] public class EditorLoader : MonoBehaviour { [Header("sprite渲染组件")] public Sprite [] sprites; [Header("Resources下的路径")] public string resPath; [Header("是否赋值了")] public bool isGenerate = false; void Update() { if (isGenerate) { // 重新设置sprites数组的长度, // 不然当资源的数量少于上次的资源的时候sprites // 超出的数组长度会变成空值 sprites = new Sprite[0]; // 赋值给sprites sprites = Resources.LoadAll<Sprite>(resPath); // 当点击isGenerate时,立即设为false,以保证每次点击只执行一次 isGenerate = false; } } }
2.将EditorLoader.cs拖拽到Main Camera组件上
3.将资源导入Resources文件夹内
4.在inspector面板Res Path输入框内输入Resources下UI的路径,然后点击Is Generate即可,无论资源如何更改,输入路径,点击Is Generate搞定了
大功告成。