Unity学习日记-Demo再升级,Script创建GameObject物件

上次成功的创建了一个小型的场景,这次目的是使用脚本来进行场景中物件的创建。


第一步的目的如下,在一个平面上批量的创建黄色的Cube。

Unity学习日记-Demo再升级,Script创建GameObject物件_第1张图片

创建Cube使用的语句是

				GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube);
然后给cube写入位置信息和颜色信息

				cube.transform.position = new Vector3 (x, 0.5f, z);
				cube.GetComponent ().material.color = new Color (1f, 1f, 0f);
贴上完整代码,在场景里面新建一个Empty GameObject,然后把Script附在Object,就可以看到效果了。

using UnityEngine;
using System.Collections;
//[ExecuteInEditMode]
public class CreateCube : MonoBehaviour {

	// Use this for initialization
	void Start () {
		int n = 1;
		for (int x = -4; x < 5; x = x + 2) {
			for (int z = -4; z < 5; z = z + 2) {
				GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube);
				cube.transform.position = new Vector3 (x, 0.5f, z);
				cube.GetComponent ().material.color = new Color (1f, 1f, 0f);
				Debug.Log (">> Cube " + n + " Created.");
				n++;
			}
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}
[ExecuteInEditMode]
这条语句可以让我们在编辑模式就能看到新建的Cube们,如果注释掉,那么在Play Mode才能看到它们。但如果启用这句话的时候,最后会生成茫茫多的Cube。。。

好的,下面我们再来升级一下,我们希望这回的小方块们也能像上次一样,在鼠标悬停的时候改变颜色。方法非常简单,只需要在生成Cube之后,为这个cube增加上次我们写的脚本组件

cube.AddComponent ();
不要太方便23333。

下面再来,生成一圈cube。像这样:

Unity学习日记-Demo再升级,Script创建GameObject物件_第2张图片

思路是,生成一个cube,进行旋转和位移,再生成下一个。

Unity里面旋转有好几种表示方式,比如四元数和欧拉角,我还没深入研究,因此没有写旋转的函数,而是直接修改方块的Rotation属性。

			GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube);
			cube.transform.position = new Vector3 (0, 0.5f, 0);
			cube.transform.rotation = Quaternion.Euler (0, 30 * i, 0);
			cube.transform.Translate (0, 0, 3);

仍然很粗暴,可以看到之前说了好几次的首字母大小写的问题,第二三行,position和rotation开头小写,所以是变量,两句话都是直接的赋值,而第四行Translate开头大写,是一个函数,表示沿着z轴移动3个单位。

贴完整代码

using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class CreateCubeCircle : MonoBehaviour {

	// Use this for initialization
	void Start () {
		for (int i = 0; i < 12; i++) {
			GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube);
			cube.transform.position = new Vector3 (0, 0.5f, 0);
			cube.transform.rotation = Quaternion.Euler (0, 30 * i, 0);
			cube.transform.Translate (0, 0, 3);
			cube.GetComponent ().material.color = new Color (0.8f, 0.8f, 0f);
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

至此,对我而言Unity场景搭建相关的学习可以告一段落了(我的目的也仅仅是Unity中搭建一个圆周形扬声器阵列),接下来要把重点转向Unity中的音频处理了。


では、以上。

  

你可能感兴趣的:(学习笔记)