用于访问资源并针对资源执行操作的接口。

通过GUID去找资源路径

怎么去拿到一个资源的GUID?

就需要引入AssetDatabase.FindAssets 这个方法,该方法用于在项目中搜索资源。

public static string[] FindAssets (string filter);

public static string[] FindAssets (string filter, string[] searchInFolders);

通过提供字符串参数来指定名称、标签或类型(类名)等过滤条件

注意:搜索过程不区分大小写。

标签(l:):资源可以附加有标签,使用 'l:' 关键字加标签名前缀可以找到具有特定标签的资源。这有助于快速定位已被标记的资源。

// 去找到所有标签带有 architecture 的资源的GUID
string[] guids1 = AssetDatabase.FindAssets("l:architecture", null);

类型(t:):基于明确标识的类型查找资源。使用 't:' 来指定要查找的资源类型。如果过滤字符串中包含了多于一种类型,则符合任意一类的资源都会被返回。类型可以是内置类型如 Texture2D 或者用户创建的脚本类。用户创建的类是从项目中的 ScriptableObject 类创建的资源。若需要搜索所有资源,可以使用 Object,因为所有资源都继承自 Object。还可以通过 searchInFolders 参数指定一个或多个文件夹来限制搜索范围,这比搜索所有文件夹中的所有资源更快。

// 找到资源类型为ItemDataListSo的所有资源guids
var guids = AssetDatabase.FindAssets("t:ItemDataListSo");

通过资源GUID找到资源路径

就需要用到AssetDatabase.GUIDToAssetPath方法,AssetDatabase.GUIDToAssetPath 是 Unity 中用于将全局唯一标识符(GUID)转换为对应资源路径的方法。在 Unity 项目中,每个资源都会被分配一个独一无二的 GUID,这个标识符用于在内部跟踪和管理资源,即使资源名称或位置发生变化,GUID 依然保持不变。

var path = AssetDatabase.GUIDToAssetPath(guids[0]);

通过资源路径加载资源

itemData = AssetDatabase.LoadAssetAtPath<ItemDataListSo>(path);