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而不是上面的内容。
答案 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字段,将预制件拖放到检查器中,然后像您一样实例化它。
希望有帮助!