保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811
在这一篇文章里,参照宣雨松的《Unity 3D游戏开发》第38页的例子,用C#写出我的第一个Unity项目 Hello Unity。
第一步,新建项目:
点击“Create Project”创建项目之后,我们看到项目中只有一个摄像机对象“Main Camera”。
并且Unity为我们创建了一个未命名(untitled)的场景,点击“File -> Save Scene”可以设定场景的名字并保存。
点击保存场景菜单之后,可以在保存场景窗口中输入场景的名字,以及保存的文件夹位置:
保存之后,我们看看Assets文件夹:
可以看到刚刚保存的场景文件“Hello Scene.unity”。
现在我们来向这个场景添加一个平面(Plane)、一个立方体(Cube)和一个球体(Sphere):
放入平面之后,为了方便起见,我们将平面的中心位置调整到(0,0,0),调整的方法是在场景中选中平面,然后在右边Inspector视图中将Position的X、Y、Z设置为0即可,如下:
同样的方法插入立方体和球体,并把他们手工调整到你喜欢的位置(例如在平面上方)
这些物体创建之后是没有颜色的,如下面:
为此我们需要给它们添加材质,例如平面添加一个绿色材质,立方体添加一个红色材质,球体添加一个蓝色材质。
点击“Assets --> Create --> Material”菜单创建材质:
在Assets材质视图中,将新创建的材质命名为Red:
在Inspector视图中,将Red材质修改为红色:
然后将Assets视图中的红色材质小球拖到场景视图中的立方体上面,此时立方体变成红色,Inspector视图中也会包含材质的信息:
同样的方法,创建蓝色、绿色材质,并把平面变成绿色,球体变成蓝色:
这个时候物体虽然有了颜色,但看起来还是很暗的,需要设置光源,例如我们在平面上方放置一个点光源,点击菜单“GameObject --> Create Other --> Point Light”:
这样场景就被照亮啦,通过Game视图或者点击运行按钮,就可以看到游戏中的场景了,如果看不到,可能是摄像机的位置和角度的问题,调整好就OK。
现在,我们想做一些最简单的控制,例如控制立方体旋转和移动,并且在屏幕上显示按钮和文字,如何做到呢?
先来创建一个脚本,方法是点击菜单“Assets --> Create --> C# Script”,在Assets视图中会出现一个脚本资源,将它命名为“HelloScript”:
双击脚本图标,打开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 3D游戏开发》第38页。
相关原代码已放到CSDN CODE,请点击打开:CODE