CocosCreator2.x_Shader(二)
一、YAML的簡(jiǎn)單介紹
YAML使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來(lái)表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件、傾印調(diào)試內(nèi)容、文件大綱(例如:許多電子郵件標(biāo)題格式和YAML非常接近)。YAML 的配置文件后綴為?.yml,如:runoob.yml
語(yǔ)法特點(diǎn):
大小寫敏感
使用縮進(jìn)表示層級(jí)關(guān)系
注意縮進(jìn)不是tab,而是空格
縮進(jìn)的空格數(shù)量不重要,只要保證相同層級(jí)的元素左對(duì)齊即可
‘#’號(hào)表示注釋
YAML 的數(shù)據(jù)類型:
對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
純量:(scalars):?jiǎn)蝹€(gè)的、不可再分的值
YAML 對(duì)象
對(duì)象鍵值對(duì)使用冒號(hào)結(jié)構(gòu)表示?key: value,冒號(hào)后面要加一個(gè)空格
也可以使用?key:{key1: value1, key2: value2, ...}
還可以使用縮進(jìn)表示層級(jí)關(guān)系:
key: ? ?
? ?child-key: value ? ?
? ?child-key2: value2
如果有較復(fù)雜的對(duì)象格式,例如對(duì)象是一個(gè)數(shù)組,可以使用問(wèn)號(hào)加一個(gè)空格代表一個(gè)復(fù)雜的 key,配合一個(gè)冒號(hào)加一個(gè)空格代表一個(gè) value
? ? ? ?
? ?- complexkey1 ? ?
? ?- complexkey2
: ? ?
? ?- complexvalue1 ? ?
? ?- complexvalue2
以上代碼表示對(duì)象的屬性是一個(gè)數(shù)組 [complexkey1,complexkey2],對(duì)應(yīng)的值也是一個(gè)數(shù)組 [complexvalue1,complexvalue2]
YAML 數(shù)組
其實(shí)上面的復(fù)雜對(duì)象示例代碼就有數(shù)組的語(yǔ)法了,就是以?-?開(kāi)頭的行表示構(gòu)成一個(gè)數(shù)組:
- A
-?B
- C
以上表示數(shù)組有三個(gè)元素A,B,C,注意開(kāi)頭格式都差不多,-加空格表示
YAML 支持多維數(shù)組,可以使用行內(nèi)表示
key: [value1, value2, ...]
子成員是一個(gè)數(shù)組,則可以在該項(xiàng)下面縮進(jìn)一個(gè)空格
-?
? - A?
? - B?
? - C
舉一個(gè)較復(fù)雜的例子:
companies: ??
? ??- ? ? ??
? ? ? ? ?? id: 1 ? ? ? ?
? ? ? ? ? ?name: company1 ? ? ? ?
? ? ? ? ? ?price: 200W ? ?
? ? - ? ? ??
? ? ? ? ? ?id: 2 ? ? ? ?
? ? ? ? ? ?name: company2 ? ? ? ?
? ? ? ? ? ?price: 500W
上述表示companies 屬性是一個(gè)數(shù)組,每一個(gè)數(shù)組元素又是由 id、name、price 三個(gè)屬性構(gòu)成
數(shù)組也可以使用流式(flow)的方式表示:
companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
純量
純量是最基本的,不可再分的值,包括:
字符串
布爾值
整數(shù)
浮點(diǎn)數(shù)
Null
時(shí)間
日期
舉個(gè)例子:
boolean: ? ?
? ?- TRUE ?#true,True都可以 ? ?
? ?- FALSE ?#false,F(xiàn)alse都可以
float: ? ?
? ?- 3.14 ? ?
? ?- 6.8523015e+5 ?#可以使用科學(xué)計(jì)數(shù)法
int: ? ?
? ?- 123 ? ?
? ?- 0b1010_0111_0100_1010_1110 ? ?#二進(jìn)制表示
null: ? ?
? ?nodeName: 'node' ? ?
? ?parent: ~ ?#使用~表示null
string: ? ?
? ?- 哈哈 ? ?
? ?- 'Hello world' ?#可以使用雙引號(hào)或者單引號(hào)包裹特殊字符 ? ?
? ?- newline ? ? ?
? ? ?newline2 ? ?#字符串可以拆成多行,每一行會(huì)被轉(zhuǎn)化成一個(gè)空格
date: ? ?
? ?- 2018-02-17 ? ?#日期必須使用ISO 8601格式,即yyyy-MM-dd
datetime:? ? ??
? ?- ?2018-02-17T15:02:31+08:00 ? ?#時(shí)間使用ISO 8601格式,時(shí)間和日期之間使用T連接,最后使用+代表時(shí)區(qū)
引用
&?錨點(diǎn)和?*?別名,可以用來(lái)引用:
????這個(gè)不再記錄,認(rèn)識(shí)一下即可
更多關(guān)于YAML的語(yǔ)法結(jié)構(gòu),可以參考https://zh.wikipedia.org/wiki/YAML