如何找到一个类型的所有资产?
How to find all assets of a type?
在我的 Unity 项目中有几个 class ArmourType 的实例(这些是资产,可编写脚本的对象)。我试图在检查器的下拉列表中显示这些内容,这很有效。但是,我使用
List<ArmourType> armourTypes = Resources.FindObjectsOfTypeAll<ArmourType>();
找到所有这些实例。这只会找到加载到内存中的对象,所以偶尔它只会找到一些所需的资产。这已记录在案,因此不是错误,但有时非常烦人。
所以我的问题是,是否有一种不同的方法来获取所有这些资产 return 那些没有加载到内存中的资产?或者有没有办法让 Unity 在查找资产时加载它们?
注意:我使用的是 Unity5 和 c#。
这是您要找的吗?
string[] guids = AssetDatabase.FindAssets ("t:ArmourType", null);
foreach (string guid in guids) {
Debug.Log (AssetDatabase.GUIDToAssetPath(guid));
}
http://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html
AssetDatabase 是一个编辑器脚本。如果你想在游戏中做类似的事情,请将相关脚本放在 Resources 文件夹中(这确保它们将包含在构建中,即使没有链接到场景中)并使用:
Resources.LoadAll<ArmourType>("");
在我的 Unity 项目中有几个 class ArmourType 的实例(这些是资产,可编写脚本的对象)。我试图在检查器的下拉列表中显示这些内容,这很有效。但是,我使用
List<ArmourType> armourTypes = Resources.FindObjectsOfTypeAll<ArmourType>();
找到所有这些实例。这只会找到加载到内存中的对象,所以偶尔它只会找到一些所需的资产。这已记录在案,因此不是错误,但有时非常烦人。
所以我的问题是,是否有一种不同的方法来获取所有这些资产 return 那些没有加载到内存中的资产?或者有没有办法让 Unity 在查找资产时加载它们?
注意:我使用的是 Unity5 和 c#。
这是您要找的吗?
string[] guids = AssetDatabase.FindAssets ("t:ArmourType", null);
foreach (string guid in guids) {
Debug.Log (AssetDatabase.GUIDToAssetPath(guid));
}
http://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html
AssetDatabase 是一个编辑器脚本。如果你想在游戏中做类似的事情,请将相关脚本放在 Resources 文件夹中(这确保它们将包含在构建中,即使没有链接到场景中)并使用:
Resources.LoadAll<ArmourType>("");