从文件夹中获取预制件然后转换为列表<gameobject>

时间:2015-07-27 09:05:10

标签: c# unity3d

我希望将所有预制件放在某个文件夹中,然后将其转换为列表

我的代码:

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)'有一些无效的参数” 。

2 个答案:

答案 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>());