我希望将所有预制件放在某个文件夹中,然后将其转换为列表
我的代码:
this.list = (List<GameObject>) (Resources.LoadAll<GameObject>("items")).ToList<GameObject>(); // this code not working
this.list = AssetDatabase.LoadAllAssetsAtPath("items").ToList<GameObject>();
在最后一行,我收到以下错误:
“UnityEngine.Object []'不包含成员
ToList
,并且最好的扩展方法重载`System.Linq.Enumerable.ToList(此System.Collections.Generic.IEnumerable)'有一些无效的参数” 。
答案 0 :(得分:2)
您需要将对象转换为gameObject,您可以尝试使用代码。 :)
this.list = (List<GameObject>) (Resources.LoadAll<GameObject>("items")).ToList<GameObject>();
List<object> objList;
objList = AssetDatabase.LoadAllAssetsAtPath("items").ToList<object>();
List<GameObject> list2 = new List<GameObject>();
foreach(Object item in objList)
{
GameObject obj = item as GameObject;
list2.Add(obj);
}
答案 1 :(得分:1)
ToArray()
is a method that belongs to the Linq namespace。
只需在代码中添加using System.Linq;
即可。
但是,第二行代码也存在问题。它会返回UnityEngine.Object
的列表,您正在尝试创建GameObjects
列表。你可以这样投:
var objectsArray = AssetDatabase.LoadAllAssetsAtPath("items");
this.list = new List<GameObject>(objectsArray.Cast<GameObject>());