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
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