Unity3D – 脚本

创建

Assets – Create – C# Script
以 Move 这个脚本来举例。

using UnityEngine;
using System.Collections;
public class Move:MonoBehaviour{
	void Update(){
		transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
	}
}

Input.GetAxis() 函数返回 -1 ~ 1 的值,在水平轴上,左方向键对应 -1,右方向键对应 1。由于目前不需要向上移动摄像机,所以 Y 轴的参数为 0。
Edit – Project Settings – Input 可修改映射到水平方向和垂直方向的名称和快捷键。

链接

脚本创建完成后需要添加到物体上,在视图 Hierarchy 单击需要添加脚本的游戏物体 Main Camera(主摄像机),然后执行 Component – Script – Move ,将 Move 链接到 Main Camera 上。

摄像机(Camera)是向玩家捕获和显示世界的设备。通过自定义和操纵摄像机,可以自由旋转游戏视角。场景中摄像机的数量不受限制,它们可以以任何顺序放置在屏幕上的任何地方,或者只捕获屏幕的某些部分。

摄像机参数:

参数含义功能
Clear Flags清除标识确定屏幕哪些部分将被清除。这是为了方便使用多个摄像机捕 捉不同的游戏元素。
Background背景在完成了视图中的所有元素的绘制后以及没有天空盒的情况下,剩余屏幕的颜色。
Culling Mask消隐遮罩包含层或忽略层将被摄像机渲染。在检视窗口向对象分配层。
Projection投影切换摄像机以模拟透视。
Perspective透视透视摄像机,由原点向外扩散性发射。即,距离越远,它的视口区域也就越大,透视视图和人眼的视觉感受是一致的。
Orthographic正交正交摄像机,无论远近,它的视口范围永远是固定的,相机会均匀地渲染物体,没有透视感。
Size大小当摄像机设置为正交模式时,摄影机视口的大小。
Field of view视野摄像机的视野,沿着本地Y轴测量,以度为单位。
Clipping Planes裁剪面摄像机从开始到结束渲染的距离。
Near相对于摄像机,绘制将发生的最近点。
Far相对于摄像机,绘制将发生的最远点。
Viewport Rect视口矩形摄像机画面显示在屏幕上的区域。
X起始水平位置摄像机视图的开始水平位置。
Y起始垂直位置摄像机视图的开始垂直位置。
W宽度摄像机输出在屏幕上的宽度。
H高度摄像机输出在屏幕上的高度。
Depth深度摄像机在渲染顺序上的位置。具有较低深度的摄像机将在较高深度的摄像机之前渲染。
Rendering Path渲染路径定义摄像机的渲染路径。
Target Texture目标纹理用于将摄像机视图输出并渲染到屏幕,一般用于制作导航图或者画中画等效果。
Occlusion Culling遮挡剔除指定是否剔除物体背向摄像机的部分。
HDR高动态光照渲染启用摄像机的高动态范围渲染功能。

区分

在 Unity 3D 中,C# 脚本的运行环境使用了 Mono 技术,Mono 是指 Novell 公司致力于 .NET 开源的工程,利用 Mono 技术可以在 Unity 3D 脚本中使用 .NET 所有的相关类。
但 Unity 3D 中 C# 的使用与传统的 C# 有一些不同。

1) 脚本中的类都继承自 MonoBehaviour 类

Unity 3D 中所有挂载到游戏对象上的脚本中包含的类都继承自 MonoBehaviour 类。
MonoBehaviour 类中定义了各种回调方法,例如 Start、Update 和 FixedUpdate 等。
通过在 Unity 中创建 C# 脚本,系统模板已经包含了必要的定义,如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviorScript : MonoBehaviour{

	// Use this for initialization
	void Start(){

	}

	// Update is called once per frame
	void Update(){

	}
}

2) 使用Awake或Start方法初始化

用于初始化的 C# 脚本代码必须置于 Awake 或 Start 方法中。
Awake 和 Start 的不同之处在于:Awake 方法是在加载场景时运行,Start 方法是在第一次调用 Update 或 FixedUpdate 方法之前调用,Awake 方法在所有 Start 方法之前运行。

3) 类名必须匹配文件名

C# 脚本中类名必须和文件名相同,否则当脚本挂载到游戏对象时,控制台会报错。

4) 只有满足特定情况时变量才能显示在属性查看器中

只有公有的成员变量才能显示在属性查看器中,而 private 和 protected 类型的成员变量不能显示,如果要使属性项在属性查看器中显示,它必须是 public 类型的。

5) 尽量避免使用构造函数

不要在构造函数中初始化任何变量,而应使用 Awake 或 Start 方法来实现。
在单一模式下使用构造函数可能会导致严重后果,因为它把普通类构造函数封装了,主要用于初始化脚本和内部变量值,这种初始化具有随机性,容易引发引用异常。因此,一般情况下尽量避免使用构造函数。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注