MonoBehaviour 类
Unity中的脚本都是继承自MonoBehaviour,它定义了基本的脚本行为,必然事件也是从 MonoBehaviour 继承而来。除了必然事件, MonoBehaviour还定义了对各种特定事件(例如模型碰撞、鼠标移动)的响应函数,这些函数均以 On 作为开头。
常用事件响应函数:
| 名称 | 用途 |
|---|---|
| OnMouseEnter | 鼠标移入GUI控件或者碰撞体时调用 |
| OnMouseOver | 鼠标停留在GUI控件或者碰撞体时调用 |
| OnMouseExit | 鼠标移出GUI控件或者碰撞体时调用 |
| OnMouseDown | 鼠标在GUI控件或者碰撞体上按下时调用 |
| OnMouseUp | 鼠标按键释放时调用 |
| OnTriggerEnter | 当其他碰撞体进入触发器时调用 |
| OnTriggerExit | 当其他碰撞体离开触发器时调用 |
| OnTriggerStay | 当其他碰撞体停留在触发器时调用 |
| OnCollisionEnter | 当碰撞体或者刚体与其他碰撞体或者刚体接触时调用 |
| OnCollisionExit | 当碰撞体或者刚体与其他碰撞体或者刚体停止接触时调用 |
| OnCollisionStay | 当碰撞体或者刚体与其他碰撞体或者刚体保持接触时调用 |
| OnControllerColliderHit | 当控制器移动时与碰撞体发生碰撞时调用 |
| OnBecameVisible | 对于任意一个相机可见时调用 |
| OnBecameInvisible | 对于任意一个相机不可见时调用 |
| OnEnable | 对象启用或者激活时调用 |
| OnDisable | 对象禁用或者取消激活时调用 |
| OnDestroy | 脚本销毁时调用 |
| OnGUI | 渲染GUI和处理GUI消息时调用 |
常用脚本API
Transform 组件:
transform组件控制游戏对象在Unity场景中的位置、旋转和大小比例,每个游戏对象都包含一个 Transform 组件。在游戏中如果想要更新玩家位置,设置相机观察角度都免不了要和Transform组件打交道。
Transform 组件的成员变量:
| 成员变量 | 说明 |
|---|---|
| position | 世界坐标系中的位置 |
| localPosition | 父对象局部坐标系中的位置 |
| eulerAngles | 世界坐标系中以欧拉角表示的旋转 |
| localEulerAngles | 父对象局部坐标系中的欧拉角 |
| right | 对象在世界坐标系中的右方向 |
| up | 对象在世界坐标系中的上方向 |
| forward | 对象在世界坐标系中的前方向 |
| rotation | 世界坐标系中以四元数表示的旋转 |
| localRotation | 父对象局部坐标系中以四元数表示的旋转 |
| localScale | 父对象局部坐标系中的缩放比例 |
| parent | 父对象的Transform 组件 |
| worldToLocalMatrix | 世界坐标系到局部坐标系的变换矩阵 (只读) |
| localToWorldMatrix | 局部坐标系到世界坐标系的变换矩阵(只读) |
| root | 对象层次关系中根对象的 Transform组件 |
| childCount | 子孙对象的数量 |
| lossyScale | 全局缩放比例(只读) |
Transform组件的成员函数:
| 成员函数 | 说明 |
|---|---|
| Translate | 按指定的方向和距离移动 |
| Rotate | 按指定的欧拉角旋转 |
| RotateAround | 按给定旋转轴和欧拉角进行旋转 |
| LookAt | 旋转是的自身的前方巷指向目标的位置 |
| TransformDirection | 将一个方向从局部坐标系变换到世界坐标系 |
| InverseTransformDirection | 讲一个方向从世界坐标系变换到局部坐标系 |
| TransformPoint | 将一个位置从局部坐标系变换到世界坐标系 |
| InverseTransformPoint | 将一个位置从世界坐标系转换到局部坐标系 |
| DetachChildren | 与所有子物体解除父子关系 |
| Find | 按名称查找子对象 |
| IsChildOf | 判断是否是指定对象的子对象 |
Time类
Unity引擎提供的Time类可获取和时间有关的信息、计算帧速率、调整时间流逝速度等。
| 成员函数 | 说明 |
|---|---|
| time | 游戏从开始到现在经理的时间(秒)(只读) |
| timeSinceLevelLoad | 此帧的开始时间(秒)(只读),从辞官加载完成开始计算 |
| deltaTime | 上一帧耗费的时间(秒)(只读) |
| fixedTime | 最近FixedUpdate的时间。该时间从游戏开始计算 |
| fixedDeltaTime | 物理引擎和FixedUpdate的更新时间间隔 |
| maximumDeltaTime | 一帧的最大耗费时间 |
| smoothDeltaTime | Time.deltaTime的平滑淡出 |
| timeScale | 时间流逝速度的比例。可用来制作慢动作特效 |
| frameCount | 已渲染的帧的总数(只读) |
| realtimeSinceStartup | 游戏从开始到现在经理的真实时间(秒),改时间不会受timeScale影响 |
| captureFramerate | 固定帧率设置 |
- 示例代码
using UnityEngine;
using System.Collections;
public class TimeDemo : MonoBehaviour
{
void OnGUI() {
GUILayout.Label("当前游戏经过的时间(秒):" + Time.time);
GUILayout.Label("游戏时间的缩放:" + Time.timeScale);
GUILayout.Label("上一帧所消耗的时间:" + Time.deltaTime);
GUILayout.Label("固定增量时间:" + Time.fixedTime);
GUILayout.Label("上一帧所消耗的固定时间:" + Time.fixedDeltaTime);
GUILayout.Label("当前游戏实际经过的时间:" + Time.realtimeSinceStartup);
}
}
Random类
Random类可以用来生成随机数。
Random类的成员变量:
| 成员变量 | 说明 |
|---|---|
| seed | 随机数生成器种子 |
| value | 返回一个0~1之间的随机浮点数,包含 0 和 1 |
| insideUnitSphere | 返回位域半径为1的求体内的一个随机点 |
| insideUnitCircle | 返回位域半径为1的圆内的一个随机点(只读) |
| onUnitSphere | 返回半径为1的球面上的一个随机点(只读) |
| rotation | 返回一个随机旋转(只读) |
| rotationUniform | 返回一个均匀分布的随机旋转(只读) |
Random类的成员变量:
| 成员函数 | 说明 |
|---|---|
| Range | 返回 min 和 max 之间的一个随机浮点数,包含 min 和 max |
- 概率事件示例代码
比如有一个抽奖活动,中奖概率为30%
if(Random.Range(0,1) < 0.3f){
//执行中奖代码
}
Mathf类
主要是一些常用的数学函数
Mathf类的变量:
| 变量 | 说明 |
|---|---|
| PI | 圆周率π,即3.14159265358979...(只读) |
| Infinity | 正无穷大 ∞(只读) |
| NegativeInfinity | 负无穷大 - ∞ (只读) |
| Deg2Rad | 度到弧度的转换系数(只读) |
| Rad2Deg | 弧度到度的转换系数(只读) |
| Epsilon | 一个很小的浮点数(只读) |
Mathf类的常用方法:
| 常用方法 | 说明 |
|---|---|
| Sin | 计算角度(单位为弧度)的正弦值 |
| Cos | 计算角度(单位为弧度)的余弦值 |
| Tan | 计算角度(单位为弧度)的正切值 |
| Asin | 计算反正弦值(返回的角度值单位为弧度) |
| Acos | 计算反余弦值(返回的角度值单位为弧度) |
| Atan | 计算反正切值(返回的角度值单位为弧度) |
| Sqrt | 计算平方根 |
| Abs | 计算绝对值 |
| Min | 返回若干数值中的最小值 |
| Max | 返回若干数值中的最大值 |
| Pow | Pow(f,p)返回 f 的 p 次方 |
| Exp Exp(p) | 返回 e 的 p 次方 |
| Log | 计算对数 |
| Log10 | 计算基为10的对数 |
| Ceil Ceil(f) | 返回大于或等于 f 的最小整数 |
| Floor Floor(f) | 返回小于或等于f的最大整数 |
| Round Round(f) | 返回浮点数 f 进行四舍五入后得到的整数 |
| Clamp | 将数值限制在 min 和 max 之间 |
| Clamp01 | 将数值限制在 0 和 1 之间 |
Coroutine协同程序
Coroutine也叫协同程序或者协程,协同程序可以和主程序并行运行,该类的功能和多线程有些类似,但是在任—指定时刻只会有一个协同程序在运行,别的协同程序则会挂起。
协同程序可以用来实现让一段程序等待一段时间后继续运行的效果。
与协同程序有关的函数:
| 函数 | 说明 |
|---|---|
| StartCoroutine | 启动一个协同程序 |
| StopCoroutine | 中指一个协同程序 |
| StopAllCoroutines | 中指所有协同程序 |
| WaitForSeconds | 等待若干秒 |
| WaitForFixedUpdate | 等待直到下一次 FixedUpdate调用 |