如何查找某种类型的所有资产?

The*_*ler 9 c# unity-game-engine

在我的Unity项目中,有一个ArmourType类的实例(这些是资产,可编写脚本的对象).我试图在检查器的下拉列表中显示这些,这是有效的.但是,我用

List<ArmourType> armourTypes = Resources.FindObjectsOfTypeAll<ArmourType>();
Run Code Online (Sandbox Code Playgroud)

找到所有这些实例.这只会查找加载到内存中的对象,因此偶尔只能找到一些必需的资源.这是记录在案的,所以不是一个错误,但有时非常烦人.

所以我的问题是,是否有一种不同的方式来获取所有这些资产,确实返回那些未加载到内存中的资产?或者有没有办法让Unity在寻找资源时加载资产?

注意:我正在使用Unity5和c#.

Hua*_*cha 12

这是你想要的?

string[] guids = AssetDatabase.FindAssets ("t:ArmourType", null);
foreach (string guid in guids) {
    Debug.Log (AssetDatabase.GUIDToAssetPath(guid));
}
Run Code Online (Sandbox Code Playgroud)

http://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html

AssetDatabase是一个编辑器脚本.如果你想在游戏中做类似的事情将相关的脚本放在一个Resources文件夹中(这确保它们将包含在构建中,即使没有在场景中链接)并使用:

Resources.LoadAll<ArmourType>("");
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚发现你不能在游戏中使用它.仅限编辑.我在游戏中找到的替代方案是`Resources.LoadAll <ArmourType>("")`.似乎工作正常但可能很慢. (2认同)