Unity中skinsbgcreator Scriptable Object实例无法被检测到
解决Unity中Scriptable Object实例无法被Resources.FindObjectsOfTypeAll找到的问题
核心问题原因
Resources.FindObjectsOfTypeAll 只会返回已加载到内存中的该类型对象,如果你只是把Scriptable Object实例放在Resources文件夹但没有主动加载,它不会被检测到。另外还有几个常见配置问题也会导致该现象。
解决步骤
1. 改用正确的资源加载方法
直接用 Resources.LoadAll 加载Resources文件夹下所有目标类型的Scriptable Object实例,这是针对Resources目录资源的专门加载方式:
// 加载Resources根目录下所有skinsbgcreator实例 skinsbgcreator[] doges = Resources.LoadAll<skinsbgcreator>(""); // 如果实例在Resources的子文件夹(比如"skins")下,路径填子文件夹名 // skinsbgcreator[] doges = Resources.LoadAll<skinsbgcreator>("skins"); Debug.Log(doges.Length);
2. 排查Scriptable Object基础配置问题
- 确保Scriptable Object脚本的文件名和类名完全一致(包括大小写),比如脚本文件名为
skinsbgcreator.cs,类定义必须是:[CreateAssetMenu(fileName = "New skinsbgcreator", menuName = "Custom/skinsbgcreator")] public class skinsbgcreator : ScriptableObject { // 自定义字段 } - 检查Resources文件夹中的实例:选中实例后,Inspector面板需正常显示脚本字段,不能出现"Missing Script"提示。
- 刷新Unity资源:右键点击Resources文件夹选择
Refresh,或重启编辑器确保资源被正确识别。
3. 明确Resources.FindObjectsOfTypeAll的适用场景
如果一定要使用该方法,需确保目标资源已通过Resources.Load、场景引用等方式加载到内存中,它更适合查找已加载的对象,而非批量加载资源。
内容的提问来源于stack exchange,提问作者Ilyass Frach
相关产品推荐
相关产品推荐

