视频游戏 UI 设计:叙事理论

原文:Video game user interface design: Diegesis theory
作者:Dave Russell
摘录:dreamana.com

MonoUI 2?

自从制作了一套自用的 UI 组件集之后,使用过程中我发现仍然有各种不顺心的地方。可能思维被 Flash 传统的 UI 组件固化了。于是萌生出制作第二版的想法。

但,真的能突破吗?

首先,我打算弃用 MonoUI 这个名字,原因就是已经有一个叫 Mono 的东东了,很容易会被人误会我这个是 .Net 的 Mono…

那么新名字先放一边,如何改进才是麻烦事。使用 Flash 做 GUI,渲染方式现在只有 2 种选择:

  1. 传统 DisplayList
  2. Stage3D

考虑到日后项目的通用性,我觉得必然要选用 DisplayList。然而麻烦的根源也是这里:

DisplayList 的架构没办法改变。

  • 不能通过继承 DisplayObject/DisplayObjectContainer/InteractiveObject 实现自己的显示对象
  • 作为容器只能选择继承 Sprite
  • Bitmap 不具备交互能力(不继承 InteractiveObject)
  • 单纯使用 Graphics 或单纯使用 BitmapData 各有优劣(即使用全矢量或使用全位图都不是最优的办法)
  • 涉及 AS3 Event 模型(AS3 事件模型也有各种不治之症),主要是鼠标交互方面

以上种种,导致使用 DisplayList 作为 UI 渲染方式的时候性能优化很有限。尤其是实现皮肤功能的时候,简化显示列表会变得困难,但想实现动态皮肤,又不得不利用更多显示层级来实现。

MonoUI 第一步

无论再怎么强大的 UI 组件库,个人觉得都不能适应各种项目的需求。而过分依赖 UI 组建构建应用,会导致交互设计单调。Flash 有个好处就是没有自带 UI 组件,不需要停留在 WIMP 的世界,但是为了迎合各种用户习惯,往往这却成了麻烦。

构建 MonoUI 的目的,不是为了提供几个见惯不怪的又不成型的 UI 组件。而是希望借此抛砖引玉,将 Flash 开发中不被重视又缺乏交流的一个方面提出来与大家共同探讨。

Cover Flow

Cover Flow

材料:Flash Player 10 3D Effect, GTween

2009/03/22 Update: 整合 MP3 播放功能

2009/05/24 Update: 除去 SimpleZSorter,支持鼠标滚轮

Tags