您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何進行Cocos中的plist文件操作,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
【嘮叨】
在Cocos中,plist文件 是非常常見的配置文件。它是特定格式的xml文件。
例如:小圖打包成大圖的紋理圖片、制作粒子特效、幀動畫等,都用到了plist文件作為配置文件。
如何創建plist文件,以及讀取plist文件中的數據信息。
【plist文件】
屬性列表(Property List)文件是一種用來存儲序列化后的對象的文件。
屬性列表文件的文件擴展名為 .plist,因此通常被稱為plist文件。
1、plist文件在Cocos中的應用
(1)圖片紋理的配置信息
將多個紋理小圖片打包成一個大圖片,并生成plist文件。用于配置各個小圖的名稱、尺寸大小、以及在大圖中的所在的矩形區域位置等信息。
可以使用TexturePacker工具,將多個小碎圖的紋理打包成一張大圖片。
(2)幀動畫的配置信息
將幀動畫的數據信息,生成為plist配置文件。包含每幀間隔、動畫重復次數、每一幀所需的圖片、每張圖片的名稱、尺寸大小、以及在大圖中所在的矩形區域位置等信息。
(3)粒子特效的配置信息
將粒子特效的數據信息,生成為plist配置文件。包含粒子發射器的位置信息、發射器模式、最大粒子數量、發射角度、發射速度、紋理貼圖等等信息。
(4)還有其它。
2、plist文件格式
plist文件為屬性列表文件,類似于鍵值對(key-value)的形式。
plist文件舉例:
// <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>dict</key> <dict> <key>name</key> <string>Alice</string> <key>age</key> <string>20</string> </dict> <key>array</key> <array> <integer>0</integer> <integer>1</integer> <integer>2</integer> </array> <key>bool</key> <true/> <key>data</key> <data></data> <key>date</key> <date>2015-02-16T16:47:11Z</date> <key>number</key> <integer>123456</integer> <key>string</key> <string>hello world!</string> </dict> </plist> //
屬性類型有:
> Dictionary :字典。(子屬性列表為:鍵值對形式)
> Array :數組。(子屬性列表為:數組值的形式)
> Boolean :邏輯值。(true / false)
> Number :數字。
> String :字符串。
> Date :日期。
> Data :數據。
其中,根節點只能為字典或數組。
并且在字典或數組中,鍵對應的值依然可以為以上的各個屬性類型。
3、創建/編輯plist文件
在Mac OS系統中,XCode可以直接創建和編輯plist文件。
當然也可以使用plist編輯軟件,或直接使用文本編輯器進行編寫。
XCode中,編輯plist文件非常方便。
其中,根節點Root,只能為Dictionary、或Array類型。
以上plist文件數據,代碼形式如下:
// <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>dict</key> <dict> <key>name</key> <string>Alice</string> <key>age</key> <string>20</string> </dict> <key>array</key> <array> <integer>0</integer> <integer>1</integer> <integer>2</integer> </array> <key>bool</key> <true/> <key>data</key> <data></data> <key>date</key> <date>2015-02-16T16:47:11Z</date> <key>number</key> <integer>123456</integer> <key>string</key> <string>hello world!</string> </dict> </plist> //
我想大家應該能讀得懂把。
4、讀取plist文件
接下來講講如何讀取plist文件的數據信息。
(1)根節點為Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 讀取為一個ValueMap 。
(2)根節點為Array :使用 FileUtils::getInstance()->getValueVectorFromFile(); 讀取為一個ValueVector 。
使用舉例:
// // 文件路徑 std::string path = "/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist"; // 讀取plist文件 // 以根節點為字典Dictionary為例 // 根節點為字典Dictionary , 讀取為一個ValueMap ValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path); // 若根節點為數組Array , 讀取為一個ValueVector // ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path); // 獲取數據 // 讀取 "string" CCLOG("string = %s", (plist["string"].asString()).c_str()); // 讀取 "dict" , 也是一個字典ValueMap ValueMap& dict = plist["dict"].asValueMap(); CCLOG("name = %s", (dict["name"].asString()).c_str()); CCLOG("age = %s", (dict["age"].asString()).c_str()); // 讀取 "array" , 是一個數組ValueVector ValueVector& array = plist["array"].asValueVector(); for (int i = 0; i < array.size(); i++) { Value& value = array[i]; CCLOG("%d", value.asInt()); } //
關于如何進行Cocos中的plist文件操作就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。