Unity中函数基本是大写开头的,以下仅介绍部分API,其余可以在unity官网查找。
Awake :初始化,一开始(脚本实例化时)执行。
Start : 在Awake之后执行,第一次Update之前执行,用于准备工作。
Update :每一帧执行,它一般而言并不是稳定的,因为每次绘制耗时都不同。也就是我们常说的游戏的FPS。
FixedUpdate :固定时间执行,在做一些动画效果计算时需要精确的时间间隔,比如要考虑时间的物理仿真计算,如果在opengl中这个还需要自己手动写一个特定时间间隔执行的控制器,嵌入到update中,在u3d中就方便多了。
LateUpdate:所有Update之后调用。那为什么不直接写在Update之后呢,因为场景中有很多脚本,它们都要执行一边update,这个LateUpdate就是等它们都执行完了才去做。经常写异步语言的人都知道,在异步语言中做同步控制是很重要的,也就是保证多个事件执行的拓扑顺序,这个LateUpdate就有种同步控制的意思。
Reset:点击reset按钮时调用。
关于LateUpdate,Unity官网给了一个相机的例子,也就是要在所有物体都Update之后才移动相机,保证画面上物体都已显示。
OnMouseOver :鼠标位于物体之上时调用。
OnMouseEnter:鼠标进入物体时调用。
OnMouseExit:鼠标离开物体时调用。
OnMouseUp:鼠标抬起时调用.
OnMouseDown :鼠标在物体上按下时调用。
OnMouseDrag:鼠标拖动物体时调用。
Unity官网给出的关于OnMouseOver和OnMouseEnter的例子:
OnApplicationFocus:应用程序失去焦点时调用。经常写GUI的人应该很清楚焦点是个什么东西,在桌面平台上就是当你点击了某个窗口,窗口处在顶层且呈现激活态时。对于一些游戏,可以利用这个函数在玩家不再聚焦于游戏窗口时,暂停一些功能。
OnApplicationPause:应用程序暂停时调用。这个可以联想一下安卓开发,也有类似的几个API,当你离开游戏进入别的界面时,游戏虽然没有关闭,但是已经不是当前栈顶的项目了,如果你重新回到游戏界面,但是你的应用程序没有做状态保存(存档)操作的话,那么界面将会到初始化的状态。
OnApplicationQuit:应用程序退出时调用,这个应该不用多说了。
Unity官网样例:当程序暂停或失去焦点时,显示游戏暂停。
OnGUI : 绘制游戏界面时调用,也是比较常用的了,GUI这部分也有很多可以研究的,前面的例子正好就使用了GUI来画一个标签。
OnCollistionEnter:两个碰撞体/刚体开始重叠时调用。
OnCollisionExit :两个碰撞体/刚体不再重叠时调用。
OnCollisionStay:两个碰撞体/刚体保持重叠状态时调用(每帧)。
OnParticleCollision:粒子碰到碰撞体时调用。
OnTriggerEnter:碰撞体进入触发区域时调用。
OnTriggerExit:碰撞体离开触发区域时调用。
OnTriggerStay:碰撞体停留在触发区域时调用(每帧)。
(同时有2D版本的,直接在后面加上2D作为函数名即可)
Unity官网样例:碰撞后绘制接触点和法线,相对速度达到一定值播放声音。
OnBecomeInvisible:物体不被摄像机显示时调用。
OnBecomeVisible:物体被摄像机显示时调用。
OnPreRender:作用于摄像机,范围内开始渲染时调用。
OnPostRender:作用于摄像机,范围内渲染完成后调用。
OnPreCull:作用于摄像机,剔除场景后调用。
以下是部分网络模块:
OnConnectedToServer:连接到服务器时调用。
OnDisconnectedFromServer:从服务器断开时调用。
OnFailedToConnect / OnFailedToConnectToMasterServer:连接失败时调用。
OnPlayerConnected:玩家成功连接服务器调用。
OnPlayerDisConnected:玩家掉线时调用。
Unity官网的例子,也就是打印一下连线的玩家: