unity3d 脚本的一些简单介绍
2015-08-24 11:42
603 查看
(标注: 本博文的所有内容,是根据学习了的暄雨松的《unity3D游戏开发》, 把自己看的一些觉得重要的东西和以后用的着的东西记下,方便以后查阅)
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后就可以,位置比较随意)、
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个方向进行缩放。
GameObject.FindWithTag(A): 找到tag为 A 的物体。 (此方法只能获取一个游戏对象。如果程序中多个对象都添加了同样的标签,那么这个方法只能获取第一个添加过这个标签的对象。)
GameObject.FindGameObjectsWithTag ( A ) : 找到所有便签为 A 的物体。
O.CompareTage( A ) : 判断GameObject B 里是否有标签为 A 的物体, 返回值为 “true” "false"。
GetComponent ( A ) 方法: 用于得到一个组件 A 。 (用此函数可以实现c#脚本和JavaScript脚本的相互调用)
rengerer.material.color : (=……)设置渲染材质的颜色或者贴图。
rengerer.material.mainTexture : 设置材料的贴图。
gameObject.SendMessage ( A0 , A1 ) : 给自己发送消息。(该对象身上绑定的所有脚本都可以接收到这个消息)
gameObject.SendMessageUpwards( A0 , A1 ) : 向父类发送消息。
第一个参数 A0 为接受消息的方法名称,第二个参数 A1 为一个Object类型的对象,可将任意类型作为参数附加在消息中。而接受的方法,有一个参数,参数为object对象。
第一个参数为被克隆的游戏对象的 Gameobject;第二个参数 V1 是是一个向量,表示克隆的新游戏对象的位置(transform.position);第三个参数也是一个向量,表示克隆的新游戏对象的角度(transform.rotation)。
Destroy(A , T): 销毁物体。
第一个参数 A 为被销毁的游戏对象, 第二个参数 T为延迟T秒后销毁。
Time.deltaTime : 获取Update() 方法中完成上一帧所消耗的时间。
Time.fixedTime : FixedUpdate () 方法中固定消耗的时间总和。这个时间可以自己去设置,具体见上面的1。
Time.fixedDeltaTime: 固定更新上一帧所消耗的时间。
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 : 圆周率。
Quaternion.Euler( ) : 返回一个旋转的四元数,该方法中的参数表示旋转的三维角度。 执行方法后,将四元数赋值给对象的旋转变量,即可在1帧内完成旋转。
Quaternion.Slerp( A1, A2 , A3 ) : 可以在一段时间内进行差值旋转, 第一个参数A1表示模型旋转的起始角度,第二个参数A2表示模型旋转的结束角度,第三个参数A3表示旋转共消耗的时间。
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表示旋转共消耗的时间。
相关文章推荐
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D游戏开发之详解 Animation类和Animator类
- Unity换装之分离元素
- unity中 拖拽任意的对象
- Unity换装之合并网格
- Unity模拟考题之Unity Certified Professional(专业能力认证)
- Unity模拟考题之Unity Certified User(应用能力认证)
- 【Unity 3D 性能优化 之 一】ParticleSyetem 的alive
- Unity3d_Unity3d"Library\UnityAssemblies\UnityEngine.xml"is denied错误解决方法
- Unity_UNity导出Android工程
- Unity插件之Kolmich(教你如何快速搭建一个完整的小地图)
- Unity3D 4.x 使用Mecanim实现动画控制
- Unity3D实现DoubleClick的一种方法
- unity, 慎用DontDestroyOnLoad
- Unity优化大全(二)之CPU-DrawCall- Batching
- Unity_在Unity不同工程之间导出导入资源的方法
- Unity优化大全(一)之开篇前言
- [Unity3D]Unity3D连衣裙实现游戏开发系统
- Unity 使用C/C++ 跨平台终极解决方案(PC,iOS,Android,以及支持C/C++的平台)
- Unity3D开发——安卓版的虚拟按键实现