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调用 |