-----------------------
这次讲下静态数据的使用。额,看到静态数据几个字是不是感觉很有技术性,什么static之类的。哈哈。
那么啥是静态数据呢?静态数据就是程序中的只读数据,例如我们游戏里有一些NPC,他们的名字、图片、人物介绍都是固定不变的,并不会再游戏过程中发生改变,例如你并不可能说在《富甲封神传》这款游戏里用哪吒打败了李靖就认为哪吒是李靖的老子吧?当然了,在游戏开发过程中这些NPC的属性数值可能经常变动,如哪吒的基础血量本来是100,后来觉得100太小,于是你决定给他改成101。为了便于修改,常规的做法就是将这些数据放到外部文件保存。
这里就选择用plist保存静态数据,然后用下面的方法读取plist数据:
- autodic=Dictionary::createWithContentsOfFile(std::string&pFileName);//读取到字典里,存于缓存中。
- //或者
- autoarray=Array::createWithContentsOfFile(std::string&pFileName);//读取与array数组中。
假如要做一款名为 《爱上喜羊羊的灰太狼》,NPC有俩,分别是喜羊羊与灰太狼,他们 在plist中的ID分别为10 和 20.如下:
- @H_502_85@<?xmlversion="1.0"encoding="UTF-8"@H_502_85@?>
- <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"@H_502_85@>
- @H_502_85@<plistversion="1.0"@H_502_85@>
- @H_502_85@<array@H_502_85@>
- @H_502_85@<dict@H_502_85@>
- @H_502_85@<key@H_502_85@>id@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>10@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>name@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>喜羊羊@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>image@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>xiyy.png@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>info@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>是一只羊,星座:白羊座,喜欢被灰太狼吃@H_502_85@</string@H_502_85@>
- @H_502_85@</dict@H_502_85@>
- @H_502_85@<dict@H_502_85@>
- @H_502_85@<key@H_502_85@>id@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>20@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>name@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>灰太狼@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>image@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>huitl.png@H_502_85@</string@H_502_85@>
- @H_502_85@<key@H_502_85@>info@H_502_85@</key@H_502_85@>
- @H_502_85@<string@H_502_85@>来自北方的狼,星座:猎户座,喜欢吃喜羊羊@H_502_85@</string@H_502_85@>
- @H_502_85@</dict@H_502_85@>
- @H_502_85@</array@H_502_85@>
- @H_502_85@</plist@H_502_85@>
- autom_array=Array::createWithContentsOfFile("info.plist");//读取plist数据,存于m_array数组中
- //遍历m_array数组,通过NPC的id找到想要的NPC信息
- for(inti=0;i<m_array->count();i++)
- {
- //从上面的plist内容可以看出,每个NPC的数据是以dic(字典)的方式存于array数组中
- autodic=static_cast<Dictionary*>(m_array->getObjectAtIndex(i));
- intid=(static_cast<String*>(dic->objForKey("id")))->intValue();//从字典中找到id对应的key值,并转化成int型
- //如果id=10,即这个是喜羊羊的id
- if(id==10)
- {
- std::stringname_str=(static_cast<String*>(dic->objForKey("name")))->getString();//读取喜羊羊的名字
- std::stringimage_str=(static_cast<String*>(dic->objForKey("image")))->getString();//读取喜羊羊图片名
- std::stringinfo_str=(static_cast<String*>(dic->objForKey("info")))->getString();//读取喜羊羊的介绍
- ...
- //下面随便你去折腾
- }
- }