📜  unity 从文件夹中获取预制件 - C# (1)

📅  最后修改于: 2023-12-03 15:20:52.704000             🧑  作者: Mango

从文件夹中获取预制件 - C#

在Unity中获取预制件,可以使用AssetDatabase类,但如果需要从文件夹中获取预制件,则需要使用Directory类和FileInfo类。

文件夹中的预制件

首先,我们需要在Unity中创建一个文件夹,将该文件夹中包含的预制件导入到项目中。为了演示方便,我们将文件夹命名为Prefabs,并将三个预制件导入其中。

获取文件夹路径

在C#中,获取文件夹路径可以使用Directory类。在Unity中,获取当前项目路径可以使用Application.dataPath,然后将文件夹名称添加到路径中。

string folderPath = Application.dataPath + "/Prefabs/";
获取预制件名称

我们需要遍历文件夹中所有预制件的名称,可以使用Directory类的GetFiles方法,以及FileInfo类的Name属性。

string[] prefabNames = Directory.GetFiles(folderPath).Select(x => new FileInfo(x).Name).ToArray();
加载预制件

最后,我们使用Resources类的Load方法,根据预制件名称加载预制件。

GameObject prefab = Resources.Load<GameObject>("Prefabs/" + prefabName);
完整代码
using System.IO;
using System.Linq;
using UnityEngine;

public class PrefabLoader : MonoBehaviour
{
    private void Start()
    {
        string folderPath = Application.dataPath + "/Prefabs/";
        string[] prefabNames = Directory.GetFiles(folderPath).Select(x => new FileInfo(x).Name).ToArray();

        foreach (string prefabName in prefabNames)
        {
            GameObject prefab = Resources.Load<GameObject>("Prefabs/" + prefabName);
            Instantiate(prefab, Vector3.zero, Quaternion.identity);
        }
    }
}
结论

以上就是从文件夹中获取预制件的方法,使用Directory类和FileInfo类可以方便地获得文件夹中所有文件的信息,然后可以根据这些信息使用Resources类加载预制件。