NGUI源码学习——UISprite

UISprite是NGUI最基本的图片显示控件之一。它的基类UIBasicSprite承载了绝大多数的显示逻辑,本文记录其各种填充方法的原理。要显示一个sprite,必定会有一个管理sprite的图集,最后会记录UIAtlas的一些基本要点。

【参考版本:NGUI 3.6.9】

NGUI源码学习——UIInput

UIInput是NGUI的输入控件,其在PC端表现为一个文本框,而在手机端则会拉起系统的键盘。本文主要记录其基本用法和原理,以及一些重要的实现和工具方法。

【参考版本:NGUI 3.6.9】

NGUI源码学习——UIScrollView

UIScrollView是NGUI支持滚动和拖拽的内容容器,可以和scroll bar联动。本文主要记录其相对滚动原理和核心方法,以及如何利用UIWrapContent优化滚动。了解了UIWrapContent的实现原理之后,可以在其上扩展和封装游戏UI中常见的数据展示控件。

【参考版本:NGUI 3.6.9】

NGUI源码学习——UILabel

UILabel是NGUI中用于显示文字的控件。其核心思想是遍历每个字符,将其转化为字体贴图的数据。本篇会抛开BBCode解析,表情符symbol解析,特殊效果(阴影、描边等)等细节,只记录几个渲染字体的核心方法。NGUI有独立的一套BMFont管理工具和类,等以后再另开篇章讲解。

【参考版本:NGUI 3.6.9】

NGUI源码学习——UICamera

UICamera是NGUI中专门用于捕获和分发交互事件的脚本,和UI渲染无关,需要挂在UI摄像机上。其核心思想是在Update中检测Input的各种输入情况,并对屏幕做raycast投射,以决定是哪个go的collider触发事件,最终将事件分发出去。

【参考版本:NGUI 3.8.1】

状态模式与状态机

状态管理是几乎所有游戏开发都会做的一个事情——大到场景管理,小到角色的逻辑状态和动画切换。如果你面对日益增长的复杂的状态分支判断代码而不知所措,状态模式和状态机可能就是救星。状态模式是一个非常简单实用的模式,本文将介绍其基本用法,并结合游戏中的有限状态机(FSM)介绍其各种实际应用和特殊状态机。

游戏开发中单例模式的一些思考

往往设计模式的书都是教人如何使用模式,唯独单例模式需要谨慎对待,甚至避免使用。像其他设计决策一样,一旦将一些不必要的单例进行了硬编码,就会带来麻烦。本文描述了单例模式的一些常见问题,以及一些参考解决方案。虽然单例模式存在一些问题,但只要不滥用并仔细思考设计,还是可以享受它带来的好处的。

游戏引擎的事件系统

游戏本质上是事件驱动的。事件是游戏过程中发生、希望关注的事情,例如发生爆炸、玩家被敌人看见、拾取补血包等等。游戏通常需要一些方法做两件事——当事件发生时通知关注该事件的对象,以及让那些对象回应所关注的事件。事件系统采用的设计模式便是知名的观察者模式,本文将介绍事件系统的一些基本原理,以及事件排队的扩展机制。

运行时游戏对象模型(上)——模型架构

在游戏性基础系统的各种组件中,运行时对象模型可能是最复杂的,通常它会提供这些核心功能:动态产生(spawn)和销毁(destroy)游戏对象,联系底层引擎系统,实时模拟对象行为,对象查询和引用,存档及对象持久性等等。本文将从对象模型架构开始,阐述“以对象为中心”和“以属性为中心”的两种基本架构,接着介绍几种游戏对象引用和查询的方法。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器