溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行Cocos中的plist文件操作

發(fā)布時(shí)間:2021-11-26 14:11:16 來源:億速云 閱讀:1146 作者:柒染 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行Cocos中的plist文件操作,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識(shí)有一定的了解。

【嘮叨】

    在Cocos中,plist文件 是非常常見的配置文件。它是特定格式的xml文件。

    例如:小圖打包成大圖的紋理圖片、制作粒子特效、幀動(dòng)畫等,都用到了plist文件作為配置文件。

    如何創(chuàng)建plist文件,以及讀取plist文件中的數(shù)據(jù)信息。    


【plist文件】

    屬性列表Property List)文件是一種用來存儲(chǔ)序列化后的對象的文件。

    屬性列表文件的文件擴(kuò)展名為 .plist,因此通常被稱為plist文件。

1、plist文件在Cocos中的應(yīng)用

    (1)圖片紋理的配置信息

        將多個(gè)紋理小圖片打包成一個(gè)大圖片,并生成plist文件。用于配置各個(gè)小圖的名稱、尺寸大小、以及在大圖中的所在的矩形區(qū)域位置等信息。

        可以使用TexturePacker工具,將多個(gè)小碎圖的紋理打包成一張大圖片。

    (2)幀動(dòng)畫的配置信息

        將幀動(dòng)畫的數(shù)據(jù)信息,生成為plist配置文件。包含每幀間隔、動(dòng)畫重復(fù)次數(shù)、每一幀所需的圖片、每張圖片的名稱、尺寸大小、以及在大圖中所在的矩形區(qū)域位置等信息。

    (3)粒子特效的配置信息

        將粒子特效的數(shù)據(jù)信息,生成為plist配置文件。包含粒子發(fā)射器的位置信息、發(fā)射器模式、最大粒子數(shù)量、發(fā)射角度、發(fā)射速度、紋理貼圖等等信息。

    (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         :數(shù)組。(子屬性列表為:數(shù)組值的形式)

        > Boolean    :邏輯值。(true / false)

        > Number    :數(shù)字。

        > String       :字符串。

        > Date          :日期。

        > Data          :數(shù)據(jù)。

    其中,根節(jié)點(diǎn)只能為字典或數(shù)組。

    并且在字典或數(shù)組中,鍵對應(yīng)的值依然可以為以上的各個(gè)屬性類型。

3、創(chuàng)建/編輯plist文件

    在Mac OS系統(tǒng)中,XCode可以直接創(chuàng)建和編輯plist文件。

    當(dāng)然也可以使用plist編輯軟件,或直接使用文本編輯器進(jìn)行編寫。

    XCode中,編輯plist文件非常方便。

    其中,根節(jié)點(diǎn)Root,只能為Dictionary、或Array類型。

如何進(jìn)行Cocos中的plist文件操作

    以上plist文件數(shù)據(jù),代碼形式如下:

//
<?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>
//

    我想大家應(yīng)該能讀得懂把。

4、讀取plist文件

    接下來講講如何讀取plist文件的數(shù)據(jù)信息。

    (1)根節(jié)點(diǎn)為Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 讀取為一個(gè)ValueMap

    (2)根節(jié)點(diǎn)為Array          :使用 FileUtils::getInstance()->getValueVectorFromFile(); 讀取為一個(gè)ValueVector 。

    使用舉例:

//
// 文件路徑
	std::string path = "/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist";

// 讀取plist文件
// 以根節(jié)點(diǎn)為字典Dictionary為例
	// 根節(jié)點(diǎn)為字典Dictionary , 讀取為一個(gè)ValueMap
	ValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path);

	// 若根節(jié)點(diǎn)為數(shù)組Array , 讀取為一個(gè)ValueVector
	// ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path);


// 獲取數(shù)據(jù)
	// 讀取 "string"
	CCLOG("string = %s", (plist["string"].asString()).c_str());

	// 讀取 "dict" , 也是一個(gè)字典ValueMap
	ValueMap& dict = plist["dict"].asValueMap();
	CCLOG("name = %s", (dict["name"].asString()).c_str());
	CCLOG("age  = %s", (dict["age"].asString()).c_str());

	// 讀取 "array" , 是一個(gè)數(shù)組ValueVector
	ValueVector& array = plist["array"].asValueVector();
	for (int i = 0; i < array.size(); i++) {
		Value& value = array[i];
		CCLOG("%d", value.asInt());
	}
//

關(guān)于如何進(jìn)行Cocos中的plist文件操作就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI