Unity - 如何实例化资产?

Unity - How do I instantiate an asset?

    void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Instantiate(Resources.Load("Objects/Level"), transform.position, Quaternion.identity);
    }
}

这是我的代码。我的资产中名为 "Objects" 的文件夹中有一个名为 Level.obj 的对象。我尝试使用 Resources.Load("Object/Level") 在该脚本的父对象之上生成它。我相信这段代码本身是正确的,因为按下空格键后控制台 returns 和 "The Object you want to instantiate is null." 。可能有问题的是我的参数,特别是我试图找到对象的方式。我也尝试过 Assets/Objects/Level 而不是上面的方法。

我从未使用过 Resources.Load() 所以你可以尝试实现一些不同的东西,但我对 "spawn" 对象所做的是将它们变成预制件(只是 drag/drop 你的反对您的资产)。然后在你的脚本上声明一个 public GameObject 字段,drag/drop 在检查器中的预制件,然后像你一样实例化它。

希望对您有所帮助!

向您的单一行为添加一个 public 字段 public GameObject myPrefab;

通过选择您的游戏对象并使用检查器在编辑器中进行设置。

Instantiate(myPrefab, transform.position, Quaternion.identity);

一样实例化它

如果您的资产在编译时不存在,您只需要 Resources.Load。正如文档所说,Resources.Load 需要资产位于 Resources 文件夹中。

https://docs.unity3d.com/ScriptReference/Resources.Load.html