Starling Builder最佳实践

在编辑器中使用图集(atlases), 不要使用单独pngs

原因如下:

  1. 如果纹理数量超出限制,AIR会抛出异常
  2. 纹理是以图集分组的,单独pngs不能分组

编辑器和游戏使用相同的资产

永远应该遵循DRY原则(don’t repeat yourself),即便是资产。

编辑器和游戏可能需要指向不同的目录,但是你可以通过符号链接把一个目录指向另外一个目录的位置。(更多信息)

所有东西都应该以设计分辨率为基准,即便是纹理

在制作游戏之前,确定你的设计分辨率,定义尺寸应该以它为基准。 这对纹理尺寸同样有效。如果你把纹理缩放到设计分辨率的大小,你就不需要对使用纹理的显示对象单独缩放。(更多信息)

定制化编辑器

编辑器非常便于配置。properties面板里的所有东西都可以通过改变工作空间下settings/editor_template.json定制化。记得备份你修改过的编辑器模版,因为在更新版本的时候你的模版有可能会被新版本的默认模版覆盖。

在游戏缓存布局数据

解释文本是比较费时的,你应该通过缓存的方式避免多次解释同一个JSON布局数据 UIBuilder.create()方法可支持传入已解释(as3 object)和未解释的数据(JSON string)作为参数。 基于性能考虑,笔者强烈建议传入已解释数据,特别是需要建立多个实例的情况(例如 ListItemRenderer)

在游戏内创建动态内容

创建动态内容有很多种方法,你可以选择对你来说最方便的一种

  1. 创建一个容器,在容器内添加占位符组件(forEditor = true,这个组件在游戏内自动被忽略),在游戏里添加真正的组件
  2. 使用customComponentCls创建一个只跟游戏相关的类的实例
  3. 在游戏中手动把一个组件替换成另一个组件
  4. 编写你自己的UI组件并编译到EmbeddedComponents.swf,放进编辑器的libs目录下,在编辑器内直接使用

在UIBuilder.create中使用binder对象

在UIBuilder.create中使用binder对象可以让程序更简洁,命名更规范。这样你就可以移除所有类似这样获取引用的代码 _exitButton = _sprite.getChildByName(“_exitButton”) as Button;

  builder/best_practice_cn.txt · Last modified: 2016/03/11 21:09 by johannh
 
Powered by DokuWiki