ONGUI->NGUI->UGUI (Unity UI史)

本文回顾了Unity UI的发展历史,从早期的OnGUI到后来广泛使用的NGUI,再到官方推出的UGUI。介绍了各阶段的特点及适用场景,为开发者选择合适的UI系统提供指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各GUI的介绍

ONGUI:Unity自带的绘制界面工具,它的成像原理是基于表层的,所以执行效率非常的低,并且没有提供复杂的UI的接口,就算开发者硬着头皮写上去只能让UI的执行效率更低。

NGUI:第三方付费插件,Unity4.6之前是做UI的不二之选,目前仍被大量使用

UGUI:官方出品,免费开源,功能强大,日渐成为主流

NGUI、UGUI对比: http://www.u3dc.com/archives/412

UnityUI发展史

OnGUI時期(Unity4.6以前)
在Untiy4.6以前官方式提供OnGUI函數來提供UI,而且不支援可視化開發,並且始終在3d object上方,也因此後來ArenMook就開發出一套NGUI plug-in讓UI這塊變得更容易開發,也可以顯示3d model跟粒子效果,網路上也有大量的教學,幾乎也被視為Unity的必備插件之一

UGUI時期(Unity4.6以後)
而4.6版本後出現了新版的UGUI,也是NGUI作者ArenMook從2012年11月加入Unity協助開發GUI讓UI的呈現更優化,因此在選擇GUI上通常會選擇UGUI,但NGUI仍然有持續更新也有使用者持續使用,如果已經使用NGUI的專案或是熟悉的開發者通常也會選擇繼續使用

到底要用UGUI還是NGUI:
有用過/正在用NGUI→選擇NGUI
沒用過NGUI的開發者→直接使用原生的UGUI即可

http://lzaunity.blogspot.com/2016/01/unityui-ui-canvasugui.html

转载于:https://www.cnblogs.com/36bian/p/7571677.html

### Unity 脚本生命周期方法调用顺序 在Unity中,脚本的生命周期由一系列特定的方法定义,这些方法按照预定顺序执行。当场景加载或游戏对象状态发生变化时,会依次触发不同的回调函数。 #### 方法调用序列 - **Awake**: 当脚本实例被创建时立即调用此方法,通常用于初始化变量和其他设置操作[^1]。 - **OnEnable**: 如果该组件启用,则在此期间首次激活 GameObject 或者每当它重新变得活跃并可见时调用。 - **Start**: 只有在第一次更新之前才会调用一次;如果脚本处于活动状态并且其关联的游戏对象也已激活,则会在 `Awake` 和 `OnEnable` 后紧接着发生[^4]。 - **FixedUpdate**: 此方法固定频率调用,主要用于物理计算和刚体运动逻辑处理,独立于帧率变化而稳定工作[^2]。 - **Update**: 每一帧渲染前都会被执行的一般用途循环函数,适合大多数常规游戏逻辑的操作。 - **LateUpdate**: 类似于 `Update`, 不过是在每一帧最后才被调用,常用来做摄像机跟随或者其他依赖于当前帧已完成的动作调整。 - **OnGUI**: 已经逐渐被淘汰的功能,在旧版Unity里负责绘制用户界面元素,现在推荐使用UI系统替代。 - **Reset**: 主要在编辑器模式下调用,比如通过Inspector窗口修改参数后自动重置默认值。 - **OnDisable**: 游戏对象变为不活动状态时调用,无论是因为停用了还是即将销毁。 - **OnDestroy**: 组件所在的物体被卸载或者应用程序关闭时最终会被调用的一个清理过程。 注意,并非所有 MonoBehaviour 都会经历上述全部阶段——具体取决于它们所属的对象何时被激活、禁用或是摧毁。此外,像 `OnGUI` 这样的某些函数可能已经被现代版本中的新机制所取代。因此,对于最新实践,请参阅官方文档获得确切指导。 ```csharp using UnityEngine; public class LifecycleExample : MonoBehaviour { void Awake() { Debug.Log("Awake called"); } void OnEnable() { Debug.Log("OnEnable called"); } void Start() { Debug.Log("Start called"); } void FixedUpdate() { Debug.Log("FixedUpdate called"); } void Update() { Debug.Log("Update called"); } void LateUpdate() { Debug.Log("LateUpdate called"); } void OnGUI() { /* GUI Code */ } void Reset() { Debug.Log("Reset called (Editor Only)"); } void OnDisable() { Debug.Log("OnDisable called"); } void OnDestroy() { Debug.Log("OnDestroy called"); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值