Unity 3d:在不知道我将使用的确切预制的情况下,我如何在运行时启动预制?



下面提供的代码似乎没有从文件

中获取prefabname生成对象
void load()
{
string[] files = Directory
.GetFiles(Application.persistentDataPath, "*.furniture");
foreach (string file in files)
{
BinaryFormatter formatter = new BinaryFormatter();
FileStream stream = new FileStream(file, FileMode.Open);
Classforsavingdatafurnitures data 
= formatter.Deserialize(stream) as Classforsavingdatafurnitures;
stream.Close();
// Create game object from prefab
GameObject prefab = Resources.Load<GameObject>(data.nameofprefab);
if (prefab != null)
{
GameObject obj 
= Instantiate(prefab, new Vector3(data.position[0], 
data.position[1], data.position[2]), 
Quaternion.Euler(data.rotation[0], 
data.rotation[1], data.rotation[2]));
obj.name = data.nameofobject;
}
}
}

我想要它从文件nameofprefab和创建一个精确的复制对象在游戏中。这段代码应该从每个文件加载每个对象保存.furniture

如果你需要更多的信息,这里是GitHub的一个repo。

问题一:在"Savingandloadingfurniture.cs"你把furnit*ur*e拼错成了furnit*ru*e。如果没有这样的文件,foreach循环甚至不会开始。

问题2:你需要一个"资源"目录。必须精确地命名为但是可以位于子文件夹中,并且可以存在多次。它应该包含您想要加载的所有内容。如果你想从子文件夹中加载一些东西,你必须注意路径。

相关内容

最新更新