您的位置:首页 > 移动开发 > Unity3D

unity3d 脚本的一些简单介绍

2015-08-24 11:42 603 查看
(标注: 本博文的所有内容,是根据学习了的暄雨松的《unity3D游戏开发》, 把自己看的一些觉得重要的东西和以后用的着的东西记下,方便以后查阅)

1、系统自身调用的几个比较重要的方法。

function Update(){}: 正常更新,用于更新逻辑。此方法没帧都会由系统自动调用一次。

function LateUpdate(){}:推迟更新,每一帧都调用。

function Awake(){}: 脚本唤醒,系统执行的第一方法,用于初始化,在脚本的生命周期中只执行一次。

function FixedUpdate(){}: 固定跟新,在unity导航菜单栏中,可以点击 “Edit” -> "Project Setting" -> "Time" 菜单中de "Fixed Timestep",设置更新频率(默认值为0.02s)。常用于移动模型等操作。

function Start(){} : 只执行一次。

function OnDestroy(){}: 当前脚本销毁时调用。

function OnGUI(){} : 绘制界面,每帧都在调用。

顺序: Awake -> Start -> Update -> LateUpdate (其他几个只要在start后就可以,位置比较随意)、

2、脚本操作游戏对象的几个简单的方法 ( O 为GameObject )

(1)创建游戏对象

GameObject.CreatePrimitive()方法: 用于创建一个原始游戏对象,其参数可以设定为立方体、球体、圆柱体等系统默认的提供的游戏对象。

O.transform.position : 设置该游戏对象的位置。

  O.transform.Rotate ( V ): 设置该游戏围绕指定的轴而自身旋转。

如果V为 vector3.right * Time.deltaTime * Speed 表示沿X轴旋转(Vector3.up: y轴; Vector3.forward: z轴)。

O.transform.RotateAround( 位置 ,轴, 角度 ): 该方法用于设置模型围绕某一点旋转。(角度= 20*Time.deltaTime,表示每秒20度)。

O.transform.Translate( V ) : 让游戏对象O根据向量V 进行平移。

O.transform.localScale= V : 让游戏对象O的3个方向进行缩放。

(2)获取游戏对象

GameObject.Find("名字"): 找到场景中的相关物体。

GameObject.FindWithTag(A): 找到tag为 A 的物体。 (此方法只能获取一个游戏对象。如果程序中多个对象都添加了同样的标签,那么这个方法只能获取第一个添加过这个标签的对象。)

GameObject.FindGameObjectsWithTag ( A ) : 找到所有便签为 A 的物体。

O.CompareTage( A ) : 判断GameObject B 里是否有标签为 A 的物体, 返回值为 “true” "false"。

(3)添加组件与删除组件

AddComponent ( ) 方法: 用于给游戏对象添加一个组件。

GetComponent ( A ) 方法: 用于得到一个组件 A 。 (用此函数可以实现c#脚本和JavaScript脚本的相互调用)

rengerer.material.color : (=……)设置渲染材质的颜色或者贴图。

rengerer.material.mainTexture : 设置材料的贴图。

(4)发送广播和消息

gameObject.BroadcastMessage ( A0 , A1 ) : 向子类发送消息。

gameObject.SendMessage ( A0 , A1 ) : 给自己发送消息。(该对象身上绑定的所有脚本都可以接收到这个消息)

gameObject.SendMessageUpwards( A0 , A1 ) : 向父类发送消息。

第一个参数 A0 为接受消息的方法名称,第二个参数 A1 为一个Object类型的对象,可将任意类型作为参数附加在消息中。而接受的方法,有一个参数,参数为object对象。

(5)克隆游戏对象

Instantiate( A0 , V1, V2) : 克隆一个A0的物体。

第一个参数为被克隆的游戏对象的 Gameobject;第二个参数 V1 是是一个向量,表示克隆的新游戏对象的位置(transform.position);第三个参数也是一个向量,表示克隆的新游戏对象的角度(transform.rotation)。

Destroy(A , T): 销毁物体。

  第一个参数 A 为被销毁的游戏对象, 第二个参数 T为延迟T秒后销毁。

3、工具类

(1) 时间

Time.time : 从游戏开始后开始计时,表示截至目前共运行的游戏时间。

Time.deltaTime : 获取Update() 方法中完成上一帧所消耗的时间。

Time.fixedTime : FixedUpdate () 方法中固定消耗的时间总和。这个时间可以自己去设置,具体见上面的1。

Time.fixedDeltaTime: 固定更新上一帧所消耗的时间。

(2)等待

yield return new WaitForSeconds( T ) : 以秒为单位让程序等待一段时间,此方法可直接使游戏主线程进去等待状态。注意: 一定要该方法的返回类型修改为IEnumerator,否则无法实现等待。 例子如下:

IEnumerator Start () {
return Test ();
}

IEnumerator Test () {
Debug.Log ("开始等待" + Time.time);
yield return new WaitForSeconds (2);
Debug.Log ("结束等待" + Time.time);
}

(3)随机数

Random.Range( A1 , A2 ) : 生成A1到A2 的随机数,数据的类型和A1、A2保持一致。

(4) 数学 (在Mathf 的数学类中)

Mathf.Abs( int i ): 返回一个绝对值,其返回值为整型或浮点型。

Mathf.Clamp( int num, int min, int max) : 返回一个限制值,限制参数1最小不超过参数2,最大不超过参数3。

Mathf.Lerp ( float start, float end, Time.time ) : 插入值,参数1表示开始的数值,参数2表示结束的数值,参数3表示所消耗的时间。

Mathf.sin ( A ) : 返回正弦值。

Mathf.cos ( A ) : 返回余弦值。

Mathf.Tan ( A ) : 返回正切值。

Mathf.Max ( A1, A2) : 返回两数的最大值。

Mathf.Min ( A1 , A2 ) : 返回两数的最小值。

Mathf.PI : 圆周率。

(5) 四元数

在unity中所有用到模型旋转的,其底层都是由四元数实现的,它可以精确的计算模型旋转的角度。

Quaternion.Euler( ) : 返回一个旋转的四元数,该方法中的参数表示旋转的三维角度。 执行方法后,将四元数赋值给对象的旋转变量,即可在1帧内完成旋转。

Quaternion.Slerp( A1, A2 , A3 ) : 可以在一段时间内进行差值旋转, 第一个参数A1表示模型旋转的起始角度,第二个参数A2表示模型旋转的结束角度,第三个参数A3表示旋转共消耗的时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: