Unity学习笔记(二)——第一个Unity项目Hello Unity

保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811

在这一篇文章里,参照宣雨松的《Unity 3D游戏开发》第38页的例子,用C#写出我的第一个Unity项目 Hello Unity。

第一步,新建项目:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第1张图片

点击“Create Project”创建项目之后,我们看到项目中只有一个摄像机对象“Main Camera”。

Unity学习笔记(二)——第一个Unity项目Hello Unity_第2张图片

并且Unity为我们创建了一个未命名(untitled)的场景,点击“File -> Save Scene”可以设定场景的名字并保存。

Unity学习笔记(二)——第一个Unity项目Hello Unity_第3张图片

点击保存场景菜单之后,可以在保存场景窗口中输入场景的名字,以及保存的文件夹位置:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第4张图片

保存之后,我们看看Assets文件夹:

可以看到刚刚保存的场景文件“Hello Scene.unity”。

现在我们来向这个场景添加一个平面(Plane)、一个立方体(Cube)和一个球体(Sphere):

Unity学习笔记(二)——第一个Unity项目Hello Unity_第5张图片

放入平面之后,为了方便起见,我们将平面的中心位置调整到(0,0,0),调整的方法是在场景中选中平面,然后在右边Inspector视图中将Position的X、Y、Z设置为0即可,如下:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第6张图片

同样的方法插入立方体和球体,并把他们手工调整到你喜欢的位置(例如在平面上方)

这些物体创建之后是没有颜色的,如下面:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第7张图片

为此我们需要给它们添加材质,例如平面添加一个绿色材质,立方体添加一个红色材质,球体添加一个蓝色材质。

点击“Assets --> Create --> Material”菜单创建材质:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第8张图片

在Assets材质视图中,将新创建的材质命名为Red:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第9张图片

在Inspector视图中,将Red材质修改为红色:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第10张图片

然后将Assets视图中的红色材质小球拖到场景视图中的立方体上面,此时立方体变成红色,Inspector视图中也会包含材质的信息:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第11张图片

同样的方法,创建蓝色、绿色材质,并把平面变成绿色,球体变成蓝色:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第12张图片

这个时候物体虽然有了颜色,但看起来还是很暗的,需要设置光源,例如我们在平面上方放置一个点光源,点击菜单“GameObject --> Create Other --> Point Light”:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第13张图片

这样场景就被照亮啦,通过Game视图或者点击运行按钮,就可以看到游戏中的场景了,如果看不到,可能是摄像机的位置和角度的问题,调整好就OK。

现在,我们想做一些最简单的控制,例如控制立方体旋转和移动,并且在屏幕上显示按钮和文字,如何做到呢?

先来创建一个脚本,方法是点击菜单“Assets --> Create --> C# Script”,在Assets视图中会出现一个脚本资源,将它命名为“HelloScript”:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第14张图片

双击脚本图标,打开MonoDevelop编辑器,写入下面的代码:

using UnityEngine;
using System.Collections;

public class HelloScript : MonoBehaviour {
	
	//对象的移动速度
	//translate speed of the object
	int translateSpeed = 10;
	
	//对象的旋转速度
	//rotation speed of the opbject
	int rotateSpeed = 500;
	

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		//如果监测到W键按下,则对象向上移动
		if (Input.GetKey(KeyCode.W)) {
			transform.Translate (Vector3.up * Time.deltaTime * translateSpeed);
		}
		//如果监测到S键按下,则对象向下移动
		if (Input.GetKey(KeyCode.S)) {
			transform.Translate (Vector3.down * Time.deltaTime * translateSpeed);
		}
		//如果监测到A键按下,则对象向左移动
		if (Input.GetKey(KeyCode.A)) {
			transform.Translate (Vector3.left * Time.deltaTime * translateSpeed);
		}
		//如果监测到D键按下,则对象向右移动
		if (Input.GetKey(KeyCode.D)) {
			transform.Translate (Vector3.right * Time.deltaTime * translateSpeed);
		}
		//如果监测到Q键按下,则对象向左旋转
		if (Input.GetKey(KeyCode.Q)) {
			transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
		}
		//如果监测到E键按下,则对象向右旋转
		if (Input.GetKey(KeyCode.E)) {
			transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
		}
	}
	
	void OnGUI() {
		//显示“向左旋转”按钮并设置事件响应脚本
		//Display Turn Left button and set event
		if (GUI.Button(new Rect(10, 10, 70, 30), "Turn Left")) {
			transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
		}
		
		//显示“向右旋转”按钮并设置事件响应脚本
		//Display Turn Right button and set event
		if (GUI.Button(new Rect(170, 10, 70, 30), "Turn Right")) {
			transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
		}
		
		//显示对象的位置和角度
		//Display position of the object.
		GUI.Label(new Rect(250, 10, 200, 30), "Location: " + transform.position);
		GUI.Label(new Rect(250, 50, 200, 30), "Rotation: " + transform.rotation);
	}
}

例如我们想用该脚本控制立方体,只需要将脚本资源从Assets视图拖到场景Scene视图中的立方体对象即可。

现在,我们就可以运行第一个“游戏”啦:

Unity学习笔记(二)——第一个Unity项目Hello Unity_第15张图片

参考资料:宣雨松《Unity 3D游戏开发》第38页。

相关原代码已放到CSDN CODE,请点击打开:CODE

你可能感兴趣的:(游戏开发)