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

本文关键字:转换 然后 列表 gameobject 文件夹 获取 | 更新日期: 2023-09-27 18:04:45

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

my code:

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。list (this System.Collections.Generic.IEnumerable)'有一些无效参数'。

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

你需要将object转换为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);
    }

ToArray()是属于Linq命名空间的方法。只需将using System.Linq;添加到您的代码中。

但是,第二行代码也有问题。它返回UnityEngine.Object的列表,而您正在尝试创建GameObjects的列表。你可以这样强制转换:

var objectsArray = AssetDatabase.LoadAllAssetsAtPath("items"); this.list = new List<GameObject>(objectsArray.Cast<GameObject>());