一、事件函数执行的先后顺序

unity中 abstract有什么好处_ide

void FixedUpdate()

    每秒执行固定次数,应该将处理物理运动相关的代码放在其中,比如游戏物体的移动。


void Update()和LateUpdate()

    跟硬件和代码的性能有关,每秒执行的次数不一定。


void Invoke(string methodName, float time)

    在time时间后,调用methodName函数


void InvokeRepeating(string methodName, float time, float repeatRate)

    在time时间后调用名字为methodName的函数,此后每repeatRate就调用一次此函数


public static void Destroy(GameObject obj, float t = 0.0f)

    在场景中删除某GameObject

    Destroy(gameObject)删除该脚本所在的对象

    Destroy(this)删除该脚本

    Destroy(gameObject,  t)在t秒后删除


Instantiate(GameObject a, Vector3 b, Quaternion c)

    在b位置上以c的方向实例a

    作用,用来实例化子弹,炮弹,物体,地图组件,刷新敌人等。

    返回值为GameObject。


void SendMessage()

    向调用此函数的对象发送消息

    常用于检测碰撞和触发

    比如collision.SendMessage("Dead");


void OnMouseEnter(); 当鼠标进入GUIElement或Collider时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。


void OnMouseExit(); 当鼠标离开GUIElement或Collider时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。


void OnMouseDown(); 当用户在GUIElement或Collider上按下鼠标时该函数被调用,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。可以做协程。


void OnMouseUp(); 当用户释放鼠标按键时,该函数被调用,即使鼠标已经不在和鼠标按下相同的一个GUIElement或Collider上时该函数被调用。可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。


void OnMouseUpAsButton(); 当用户释放鼠标按键时,该函数被调用,只在和鼠标按下相同的一个GUIElement或Collider上时该函数被调用。可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。


void OnMouseDrag(); 当用户在GUIElement或Collider上点击鼠标并一直按着时该函数被调用,按着鼠标的每一帧中该函数都会被调用,可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。


void OnMouseOver(); 当鼠标在GUIElement或Collider上时该函数被调用,按着鼠标的每一帧中该函数都会被调用,可以做协程,该消息会被发送给Collider或GUIElement的所有脚本。该函数不能被属于忽略Raycast layer的对象来调用。


void OnTriggerEnter(Collider); 当碰撞器进入触发器时该函数被调用。该消息被发送给触发器碰撞器和碰到触发器的刚体(假如没有刚体就是碰撞器),但只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。


void OnTriggerEnter2D(Collider2D); 当另一个对象碰到这个对象上挂有的触发器碰撞器时,该消息被发送(仅仅2D物理适用)。


void OnTriggerExit(Collider); 当另一个碰撞器停止碰撞该触发器时该函数被调用。该消息被发送给触发器和碰撞触发器的碰撞器。注意,只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。


void OnTriggerExit2D(Collider2D); 当另一个对象离开这个对象上挂有的触发器碰撞器时,该消息被发送(仅仅2D物理适用)。


void OnTriggerStay(Collider); 对于每一个正在碰撞该触发器的碰撞器,该函数每帧被调用一次。该消息会被发送给触发器和碰撞该触发器的碰撞器,注意,只有在其中一个碰撞器也有刚体挂载时,触发事件才会被发送。该函数可以做协程。


void OnTriggerStay2D(Collider2D); 当另一个对象在该对象的触发器碰撞器内时该函数每帧被都会被调用。(仅仅2D物理适用)


Time类


unity中 abstract有什么好处_ide_02


图中红色为只读值,绿色为可读可写:


Time.time 表示从游戏开始到现在的时间,会随着游戏的暂停而停止计算。

Time.timeSinceLevelLoad 表示从当前Scene加载完成到目前为止的时间,也会随着暂停操作而停止。

Time.deltaTime 表示从上一帧到当前帧(上一帧所消耗的)时间,以秒为单位。

Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。

Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。

Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前N帧的时间加权平均的值。

Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。

Time.frameCount  已渲染总帧数。

Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加,也不受timeScale影响。

Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。

Time.unscaledDeltaTime 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。

Time.unscaledTime 不考虑timescale时候与time相同,若timescale被设置,则无效。


Mathf类

Mathf.Abs  绝对值    计算并返回指定参数 f 绝对值。 



Mathf.Clamp限制 


static function Clamp (value : float, min :float, max : float) : float     限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value 


static function Clamp (value : int, min :int, max : int) : int        限制value的值在min和max之间,并返回value。 


Mathf.Lerp插值 
static function Lerp (from : float, to :float, t : float) : float     基于浮点数t返回a到b之间的插值,t限制在0~1之间。      当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。 


Mathf.Max最大值 
static function Max (a : float, b : float): float 
static function Max (params values :float[]) : float 
返回两个或更多值中最大的值。 

Mathf.Min最小值 
static function Min (a : float, b : float): float 
static function Min (params values :float[]) : float 
返回两个或更多值中最小的值。 


unity中 abstract有什么好处_ide_02


图中红色为只读值,绿色为可读可写:



Time.time 表示从游戏开始到现在的时间,会随着游戏的暂停而停止计算。

Time.timeSinceLevelLoad 表示从当前Scene加载完成到目前为止的时间,也会随着暂停操作而停止。

Time.deltaTime 表示从上一帧到当前帧(上一帧所消耗的)时间,以秒为单位。

Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。

Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。

Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前N帧的时间加权平均的值。

Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。

Time.frameCount  已渲染总帧数。

Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加,也不受timeScale影响。

Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。

Time.unscaledDeltaTime 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。

Time.unscaledTime 不考虑timescale时候与time相同,若timescale被设置,则无效。