Unity-如何实例化资产?

时间:2019-02-19 15:20:55

标签: c# unity3d instantiation

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

这是我的代码。我的资产中一个名为“ Objects”的文件夹中有一个名为Level.obj的对象。我尝试使用Resources.Load(“ Object / Level”)在此脚本的父对象之上生成它。我认为这段代码本身是正确的,因为控制台返回“您要实例化的对象为null”。在按下空格键时。我的参数可能是错误的,特别是我尝试查找对象的方式。我还尝试了Assets / Objects / Level而不是上面的内容。

2 个答案:

答案 0 :(得分:3)

将一个公共字段public GameObject myPrefab;添加到您的单行为。

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

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

一样实例化它

如果您的资产在编译时不存在,则仅需要Resources.Load。就像文档中所说的那样,Resources.Load需要将资产放在Resources文件夹中。

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

答案 1 :(得分:0)

我从没使用过Resources.Load(),因此您可以尝试实现一些不同的东西,但是我“产生”对象的方法是将它们制成预制件(只需将对象拖放到资产中)。然后在脚本上声明一个公共GameObject字段,将预制件拖放到检查器中,然后像您一样实例化它。

希望有帮助!