GUI Unity3d 的 GUI 框架分析 本系列的第三篇,以 Unity3d 为例,看看其如何实现基于事件的 GUI 框架。 本文分析的是 uGUI,而非 Unity3d 的 Editor UI 。后者是一种称为立即模式(Immediate Mode)的 UI 交互方式,Unity3d 的编辑器插件以及非常早期的 Unity UI 使用这种方式开发。 与 Cocos2d 或者 Egret 不同的是,Unity3d 是一个基于组件-实体-系统(Entity-Component-System[…
GUI Egret 的 GUI 框架分析 本系列的第二篇,以 egret 为例,看看其如何实现基于事件的 GUI 框架。 Egret 是另一款基于 html5 的国产开源游戏引擎。其框架结构大量参考 Flash ,并且使用 TypeScript 这种强类型脚本语言,特别适合早期的 ActionScript 3.0 游戏开发者迁移到 Egret 的开发环境。 虽然我并没有用它做过比较大的项目,但是对它的实现也是保持了一点的好奇心。同第一篇一样,我将 egret 框架中与 GUI 有关的类绘制出来,方便理解: 通过与上一篇的…
Game Engine Cocos2d-html5 的 GUI 框架分析 本系列的第一篇,以 cocos2d-html5 为例,分析其如何实现基于事件的 GUI 框架。 Cocos2d-x 是当下非常流行的跨平台游戏引擎,其衍生版 Cocos2d-html5 是使用 Javascript 编写并运行于浏览器的 Canvas 的版本,非常符合我的口味。源码可以在这里下载。 经过简单梳理,我将源码中与 GUI 相关的几个类以及主要函数提取并绘制成类图,方便理解: 从这张图里可以总结出一些有趣的概念: 场景树(Tree) GUI 之所以称为 Graphic User Interface,首先它是基于图形的。Cocos2d…
GUI 浅析事件驱动的 GUI 原理 从中学时期做 Flash 开发,到大学期间学 App 开发,到毕业后当了几年手机游戏开发者,再到现在转行做 Web 前端。在脑海里一直挥洒不去的疑问就是「如何从 0 开始实现一个 GUI 框架」。 期间间断性地尝试过找一些书看,但大部分都是教如何用现成的桌面 GUI 框架(例如 Java Swing,Qt,WPF 等)写一些软件或者 APP 。而非我想要的那种偏实践性的,从概念介绍 GUI 架构并一步一步实现的文献。 不过在经过使用那么多框架后做了各种各样的项目后,…