unity——MonoBehaviour类

http://hi.baidu.com/quibos/item/2f372810e52849f7bf90428e


unity——MonoBehaviour类

MonoBehaviour是每个脚本的基类. 每个Javascript脚本自动继承MonoBehaviour,使用C#或Boo时,需要显式继承MonoBehaviour.

 

函数:

 

定时调用

function Invoke (methodName : string, time: float) : void

       在一定时间后调用methodName函数。

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

       每隔一定时间调用一次methodName函数。

function CancelInvoke () : void

       取消这个脚本中的所有调用。

function IsInvoking (methodName : string) :bool

       某指定函数是否在等候调用。

function IsInvoking () : bool

       此脚本中是否有调用在等候。

 

协程

function StartCoroutine (routine :IEnumerator) : Coroutine 

       开始协程

function StartCoroutine (methodName :string, value : object = null) : Coroutine

       通过协程名来开始协程

function StopCoroutine (methodName :string) : void 

       停止这个脚本中通过协程名开始的、名为methodName的所有协程。

function StopAllCoroutines () : void

       停止所在脚本中的所有协同程序

 

可重写函数:

 

全局事件响应函数

void Update()                          

       当MonoBehaviour启用时,其Update在每一帧被调用。

void LateUpdate()                       

       当Behaviour启用时,其LateUpdate在每一帧被调用。LateUpdate是在所有Update函数调用后被调用。

void FixedUpdate()                     

       当MonoBehaviour启用时,其FixedUpdate在每一固定帧被调用。处理Rigidbody时,需要用FixedUpdate 代替Update。

void Awake()                              

       当一个脚本实例被载入时Awake被调用。在脚本整个生命周期内它仅被调用一次。Awake总是在Start之前被调用。在该函数中设置引用。

void Start()                                

       Start仅在Update函数第一次被调用前调用。它和Awake的不同是Start只在脚本实例被启用时调用。在该函数中进行变量赋值。

void OnEnable()                  

       当对象变为可用或激活状态时此函数被调用。

void OnDisable()                  

       当对象变为不可用或非激活状态时此函数被调用。

void OnDestroy()                        

       当MonoBehaviour将被销毁时,这个函数被调用。

 

鼠标事件响应函数

void OnMouseEnter()           当鼠标进入到GUIElement(GUI元素)或Collider(碰撞体)中时调用。

void OnMouseOver()            当鼠标悬浮在GUIElement(GUI元素)或Collider(碰撞体)上时调用。

void OnMouseExit()              当鼠标移出GUIElement(GUI元素)或Collider(碰撞体)上时调用。

void OnMouseDown()          当鼠标在GUIElement(GUI元素)或Collider(碰撞体)上点击时调用。

void OnMouseUp()               当用户释放鼠标按钮时调用。

void OnMouseDrag()            当用户鼠标拖拽GUIElement(GUI元素)或Collider(碰撞体)时调用。

 

触发器事件响应函数

void OnTriggerEnter(Collider other)    当Collider(碰撞体)进入trigger(触发器)时调用。

void OnTriggerExit(Collider other)       当Collider(碰撞体)停止触发trigger(触发器)时调用。

void OnTriggerStay(Collider other)      当碰撞体接触触发器时,将在每一帧被调用。

 

碰撞事件响应函数

void OnCollisionEnter(Collision collision)          当进入碰撞时调用

void OnCollisionExit(Collision collisionInfo)      当退出碰撞时调用

void OnCollisionStay(Collision collisionInfo)     当逗留在碰撞状态时会在每一帧被调用。

 

相机事件响应函数

void OnPreCull()                                               在相机消隐场景之前被调用。

void OnPreRender()                                          在相机渲染场景之前被调用。

void OnPostRender()                                        在相机完成场景渲染之后被调用。

void OnRenderImage()                                     当所有图片被渲染完成后调用,用来进行后期效果处理。

 

渲染器事件

function OnBecameVisible () : void                    当渲染器对于任何摄像机可见时调用

function OnBecameInvisible () : void                 当渲染器对于任何摄像机不可见时调用

 

程序事件响应函数

void OnApplicationPause()                               当程序暂停时调用。

void OnApplicationFocus()                               当程序失去焦点时调用。

void OnApplicationQuit()                                 当程序退出之前调用。

 

服务器事件响应函数

void OnPlayerConnected(NetworkPlayer player)  

       当一个新玩家成功连接时在服务器上被调用。

void OnServerInitialized()                                       

       当服务器初始化完成时,在服务器上调用这个函数。

void OnConnectedToServer()                                 

       当你成功连接到服务器时,在客户端调用。

void OnPlayerDisconnected(NetworkPlayer player)   

       当一个玩家从服务器上断开时在服务器端调用。

void OnDisconnectedFromServer(NetworkDisconnection info)

       当失去连接或从服务器端断开时在客户端调用。

void OnFailedToConnect(NetworkConnectionErrorerror)

       当一个连接因为某些原因失败时在客户端调用。

void OnFailedToConnectToMasterServer(NetworkConnectionError info)

       当连接主服务器出现问题时在客户端或服务器端调用.

void OnMasterServerEvent(MasterServerEvent msEvent) 

       当接收到来自服务器的报告事件时在客户端或服务器端调用。

void OnNetworkInstantiate(NetworkMessageInfo info) 

       当一个物体使用Network.Instantiate进行网络初始化时调用。

 

其他重要函数

void OnLevelWasLoaded(int level)                     当一个新关卡被载入时此函数被调用。

void OnGUI()                                                         渲染和处理GUI事件,该函数将会在每一帧被调用。

void OnJointBreak (float breakForce)                 当关节断开时调用。

unity事件响应函数调用次序:


unity 事件(顺序及功能说明)

Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。
Awake
当前控制脚本实例被装载的时候调用。一般用于初始化整个实例使用。
Start
当前控制脚本第一次执行Update之前调用。
Update
每帧都执行一次。这是最常用的事件函数。
FixedUpdate 
每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
LateUpdate 
在每帧执行完毕调用,他是在所有update结束后才掉,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
Reset 
这个是编辑器模式情况下你点击reset按钮(如果有的话)调用的,你可以在这里做调试的初始化工作。
OnApplicationFocus
OnApplicationPause  
OnApplicationQuit 
应用程序失去焦点,应用程序暂停,应用程序退出时候发送这些消息。
OnBecameInvisible  
OnBecameVisible 
当脚本宿主(不)被任何摄像机显示时候发送此消息。
OnCollisionEnter  
OnCollisionExit  
OnCollisionStay 
当其他碰撞或者刚体(collider/rigidbody )和参数的碰撞或者刚体(collider/rigidbody )重叠、退出时发送前两个。而当他们保持重叠状态时每帧都会发送一个Stay消息。
OnConnectedToServer
OnDisconnectedFromServer  
OnFailedToConnect  
OnFailedToConnectToMasterServer
前两个 当客户端成功连接到服务器或者断开服务器时发送此消息。
后两个 当连接失败时候触发
OnMasterServerEvent 
当Master服务器发送报告时候触发。
OnNetworkInstantiate 
当物体被Network.Instantiate时触发。(还没研究到)
OnPlayerConnected  
OnPlayerDisconnected 
在服务端当玩家成功连接/离线时候触发。
OnControllerColliderHit 
当控制者和参数ControllerColliderHit碰撞时候触发此消息。官方举例可以用于角色移动一个物体,当角色碰到这个参数物体时候,你可以在这函数里操作移动此物体的动作,等等。
OnParticleCollision 
当粒子撞到碰撞体(collider)时触发。
OnDisable  
OnEnable 
当脚本宿主被启用或者禁用时候触发。
OnDrawGizmos
OnDrawGizmosSelected 
编辑器状态时绘制Gizmos和Gizmos被选取时候触发。
注:Gizmos参见我另一篇blog,他是用与做自己的组件时候用的,比如路径点绘制之类的。
OnGUI 
绘制GUI时候触发。一般在这个函数里绘制GUI菜单。
OnJointBreak 
(还没研究到)
OnLevelWasLoaded
当新的level(unity包)读取完毕时候触发。
OnMouseDown
OnMouseDrag 
OnMouseEnter  
OnMouseExit  
OnMouseOver  
OnMouseUp 
鼠标事件,都是当鼠标和gui或者碰撞体(Collider)交互时候触发。需要说明的是drag其实就是鼠标down后up之前持续每帧都会发送此消息。
OnPostRender 
这个函数仅用于宿主为摄像机的脚本。当此摄像机范围内所有渲染都完成时候触发此消息。
OnPreCull 
这个函数仅用于宿主为摄像机的脚本。当此摄像机剔除了某个渲染场景时候触发此消息。(未验证)
OnPreRender
这个函数仅用于宿主为摄像机的脚本。当此摄像机开始渲染某个场景时候触发此消息。
OnRenderImage 
当所有渲染完成image的postprocessing effects(只有pro版支持)后触发。
OnRenderObject
这个函数仅用于宿主为摄像机的脚本。当使用Graphics.DrawMeshNow 或者其他函数绘制自己建立的物体渲染完毕时触发。
OnSerializeNetworkView 
OnServerInitialized 
当 Network.InitializeServer完成时触发。
OnTriggerEnter  
OnTriggerExit  
OnTriggerStay 
当碰撞体(collier)接触触发区域(trigger)时候的一系列消息。
OnWillRenderObject


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值