六、自定义属性
Tiled一个主要的优势在于可以给它的基础数据结构添加自定义属性。这种方式可能包含了许多种形式的自定义信息,这些信息可能会在你集成Tiled地图的框架使用到。
自定义属性在属性窗口展示。这个窗口是对上下文环境敏感的,通常显示最后一个被选择对象的属性。在图块集上对应图块或者在对象层上代码对象,它还可以支持多选。
6.1 添加属性
当你添加一个属性时(点击属性窗口的左下角),你会被提示添加它的名称和属性。Tiled现在支持以下几种基础的属性类型:
- String (任意文本,包含多行文本)
- Float(浮点数字)
- Int(整形数字)
- Bool(true或者false)
- File(文件的相关路径)
- Color(32位的颜色值)
属性类型会在属性窗口的自定义编辑器中被用到。选择数字或者boolean类型可以避免在输出JSON或者Lua时被引用。
6.2 Tile Property Inheritance(图块属性继承)(Tiled1.0特性)
当你向一个图块添加自定义属性后,当该图块的实例化对象被选中后,这些属性也会被 看得见。这样使得每一个对象可以很方便关联和复写属性。这在结合Typed Tiles(类型图块)时会特别好用。(待斟酌)
继承属性会以灰色的方式展示(对文本颜色无效),相反,复写的属性会以黑色的方式显示(通常是文本颜色)。
6.3 Predifining Properties(预定义属性)
6.3.1 General Setup(通用设置)
通常情况下,你只需要在你的游戏中使用有限的对象类型集,每一个对象类型都有一固定的可以属性集,拥有特定的类型和默认值。为了节省你的时间,Tiled允许基于对象的“类型”成员变量进行预定义。你可以通过:视图菜单==》对象类型编辑器,打开对象类型编辑器。
默认地,Tiled存储用户设置的这些对象类型。但是,如果你想将你工程下的这些对象类型进行分享,你可以导出你的对象类型或者改变对象类型文件的存储位置。一个简单的使用自我解析内容的XML或JSON格式的文件被用来存储你的对象类型。
颜色不仅仅会影响各种形状对象的渲染,在你给对象命名时还会被显示在标签中。
为了在属性窗口可以显示预定义的属性,你所需要做的是在内装的“类型”属性中输入类型名称。通常这是为了告知你的引擎,你现在想做些什么。(待斟酌)
6.4 Typed Tiles(类型图块)(Tiled1.0开始)
如果你使用到了图块对象,你可以给图块设置类型来避免给每个实例进行设置。给图块设定类型后,当图块被选中后,可以使预定义属性可见,允许重写类型值。当然,当图块对象实例选中后,可以对可见的值进行复写。
一个定义自定义属性类型的使用例子如:“NPC”、“Enemy”或者“Item”的属性设置为“名称”、“健康”、“体重”。当这些图块代表特定的实体时,你可以给它们设置特定的值。在你将图块按照对象的方式放置时,你可以根据你的需要去复写这些值。
6.5 未来的拓展
这里有几种自定义属性类型可能在将来的版本添加:
- Enumerations(枚举):你可以定义所有的可能类型,并且可以在下拉对话框进行选择。
- Object references(对象引用):允许链接其他的对象,而且Tiled能对链接进行展示。
- Array properties(数组属性):允许属性拥有一列的数据。
- Dictionary Properties(字典属性),允许属性包含任意其他的数字属性作为子属性。
如果能够对属性值进行限制也是一件比较好的事情,例如string属性的长度,或者数字属性的最大\最小值 。
如基于对象类型的预定义类型不同的是,我希望能够支持对于所有数据类似的预定义。所以,定义自定义属性将会对地图、图块集、图层等等同样有效。
最后,预定义属性能够很好的给工程支持。之后,你可以切换不同的工程,或者在一个存在的工程开始,而不需要再去给Tiled设置正确的对象类型的定义。(待斟酌)
由于边学边翻译,所以有些知识点理解的不透,翻译不到位,请大家多多指导。
加油,共勉。