1.这是利用Instantiate实例化生成一堵墙
2.生成墙这个地方需要注意是预制体的使用,不要直接添加脚本到预制体,而是重新创建空物体,添加脚本,并在public那一栏添加预制体,否则会一直生成Cube直至卡死
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CreateWall : MonoBehaviour {
public GameObject m_cube; //创建游戏物体m_cube对象
private Transform m_transform; //创建位置组件m_transform对象
// Use this for initialization
void Start () {
m_transform = gameObject.GetComponent<Transform>(); //获取游戏物体位置组件赋值给m_transform
CreatWall(); //调用自定义函数CreateWall,函数作用是创建一堵墙
}
// Update is called once per frame
void Update () {
}
private void CreatWall() { //自定义创建墙函数,创建5行7列Cube堆的墙
for(int i=0;i<5;i++){ //从第一行开始堆,堆到七个后,跳出内循环,继续在第二行堆
for(int j=-3;j<=3;j++){ //从中心位置开始从负方向到正方向堆
Vector3 pos = new Vector3(j, i+0.5f, 0); //定义三维向量对象pos,用来重新定位位置,y轴方向位置要提高0.5,不然Cube一半在地板下
GameObject game_obj = Instantiate(m_cube,pos,Quaternion.identity); //在重定位后的位置无旋转实例化m_cube,并赋给game_obj对象
game_obj.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f), Random.Range(0.0f, 1.0f)); //给game_obj上随机颜色
}
}
}
}