You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何不使用Inspector通过代码初始化预制体数组?

无需手动在Inspector赋值的prefab数组初始化方案

以下是Unity环境下三种常用的实现方案:

  • 方法1:使用Resources文件夹动态加载(运行时可用)

    1. 在项目Assets目录下新建名为Resources的文件夹,将所有方块预制体存入该文件夹的子目录中,例如Resources/Blocks
    2. 改写Spawner代码,在生命周期函数中自动加载所有预制体:
    public class Spawner : MonoBehaviour {
        private GameObject[] blocks;
    
        private void Awake()
        {
            // 加载Resources/Blocks目录下所有GameObject类型的资源
            blocks = Resources.LoadAll<GameObject>("Blocks");
        }
    
        //...
    }
    

    注意:Resources文件夹下的所有资源都会被强制打进包体,无法自动裁剪未使用的资源,适合确定所有预制体都会被用到的场景

  • 方法2:编辑器模式下用AssetDatabase批量赋值(仅Editor可用,适合提前赋值降低运行时开销)
    如果你希望保留序列化的public数组,提前在编辑阶段完成赋值,可以写个轻量Editor工具实现批量填充:

    #if UNITY_EDITOR
    using UnityEditor;
    using UnityEngine;
    
    [CustomEditor(typeof(Spawner))]
    public class SpawnerEditor : Editor
    {
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            Spawner spawner = (Spawner)target;
    
            if (GUILayout.Button("自动加载所有方块预制体"))
            {
                // 自行修改路径参数为你的预制体存放路径,例如Assets/Prefabs/Blocks
                string[] guids = AssetDatabase.FindAssets("t:GameObject", new[] {"Assets/Prefabs/Blocks"});
                spawner.blocks = new GameObject[guids.Length];
                for (int i = 0; i < guids.Length; i++)
                {
                    string path = AssetDatabase.GUIDToAssetPath(guids[i]);
                    spawner.blocks[i] = AssetDatabase.LoadAssetAtPath<GameObject>(path);
                }
                EditorUtility.SetDirty(spawner);
            }
        }
    }
    #endif
    

    将上述脚本放在项目的Editor文件夹下,选中Spawner对象后Inspector会多出一个功能按钮,点击即可自动完成数组填充,无需手动拖入资源。

  • 方法3:使用Addressables可寻址资源系统(适合千级以上大量资源、有热更需求的场景)
    给所有方块预制体打上同一个自定义标签(例如BlockPrefab),运行时通过标签即可批量加载所有对应资源,该方案支持资源热更新,也不会出现Resources文件夹的包体冗余问题。


内容的提问来源于stack exchange,提问作者404 Name Not Found

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:27:03