-----------------------
这次讲下静态数据的使用。额,看到静态数据几个字是不是感觉很有技术性,什么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.如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plistversion="1.0">
- <array>
- <dict>
- <key>id</key>
- <string>10</string>
- <key>name</key>
- <string>喜羊羊</string>
- <key>image</key>
- <string>xiyy.png</string>
- <key>info</key>
- <string>是一只羊,星座:白羊座,喜欢被灰太狼吃</string>
- </dict>
- <dict>
- <key>id</key>
- <string>20</string>
- <key>name</key>
- <string>灰太狼</string>
- <key>image</key>
- <string>huitl.png</string>
- <key>info</key>
- <string>来自北方的狼,星座:猎户座,喜欢吃喜羊羊</string>
- </dict>
- </array>
- </plist>
- 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();//读取喜羊羊的介绍
- ...
- //下面随便你去折腾
- }
- }