预制体的好处就不提了,本篇讲述最简单的动态生成预制体的实现方法。
1.创建文件夹Resources
这点很重要,因为它只会从这里调用。所以需要在Assets工程文件夹里新建一个Resources文件夹,然后预制体可以放里面,不过个人建议在这里再建个子文件夹Prefabs(因为还有可能需要加载音频、文本什么的),然后把预制体丢到里面。
2.创建预制体
把在场景中想要的生成预制体的对象拖到文件夹里,就变成了预制体。这里假设这个预制体叫“01”,被放到了“Assets-Resources-Prefabs”文件夹里。
3.代码调用
①一行代码的写法
void Update() //每帧调用
{
if (Input.GetKeyDown(KeyCode.Space)) //按下空格键后
{
GameObject.Instantiate(Resources.Load("Prefabs/01"),new Vector3(0f, 0f, 0f), Quaternion.Euler(new Vector3(0, 0, 0f)));
//核心代码是GameObject.Instantiate(Resources.Load("Prefabs/01")),后面两个可以设置生成位置和角度,不写默认是预制体的原本位置。
}
}
在一个脚本里添加上述的代码方法。就可以实现按空格后在坐标原点生成一个预制体01-clone。
②赋予名字的写法
另一种写法就是先给个GameObject属性,然后可以给它命名,而不会自动是01-clone,多用于需要用到物体名字的情况。
void Update() //每帧调用
{
if (Input.GetKeyDown(KeyCode.Space)) //按下空格键后
{
GameObject weaponClone = (GameObject)Instantiate(Resources.Load("Prefabs/01"), new Vector3(0f, 0f, 0f), Quaternion.Euler(new Vector3(0, 0, 0f)));
weaponClone.name = 01;//赋予预制体在场景中的名字
}
}