在我的Unity项目中,有几个ArmourType类实例(这些是资产,可编写脚本的对象)。我试图在检查器的下拉列表中显示这些,这是有效的。但是,我使用
List<ArmourType> armourTypes = Resources.FindObjectsOfTypeAll<ArmourType>();
找到所有这些实例。这只会查找加载到内存中的对象,因此偶尔只能找到一些必需的资源。这是记录在案的,所以不是一个错误,但有时非常烦人。
所以我的问题是,是否有一种不同的方式来获取所有这些资产,这些资产确实会返回那些未加载到内存中的资产?或者有没有办法让Unity在查找资源时加载资产?
注意:我使用Unity5和c#。
答案 0 :(得分:12)
这是你在找什么?
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>("");