Cocos2dx 小技巧(七) 静态数据

前端之家收集整理的这篇文章主要介绍了Cocos2dx 小技巧(七) 静态数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
貌似扯远了。赶紧回到正题!
-----------------------
这次讲下静态数据的使用。额,看到静态数据几个字是不是感觉很有技术性,什么static之类的。哈哈。
那么啥是静态数据呢?静态数据就是程序中的只读数据,例如我们游戏里有一些NPC,他们的名字、图片、人物介绍都是固定不变的,并不会再游戏过程中发生改变,例如你并不可能说在《富甲封神传》这款游戏里用哪吒打败了李靖就认为哪吒是李靖的老子吧?当然了,在游戏开发过程中这些NPC的属性数值可能经常变动,如哪吒的基础血量本来是100,后来觉得100太小,于是你决定给他改成101。为了便于修改,常规的做法就是将这些数据放到外部文件保存。
这里就选择用plist保存静态数据,然后用下面的方法读取plist数据:

  1. autodic=Dictionary::createWithContentsOfFile(std::string&pFileName);//读取到字典里,存于缓存中。
  2. //或者
  3. autoarray=Array::createWithContentsOfFile(std::string&pFileName);//读取与array数组中。
下面用一个小例子简单介绍下如何使用:
假如要做一款名为 《爱上喜羊羊的灰太狼》,NPC有俩,分别是喜羊羊与灰太狼,他们 在plist中的ID分别为10 和 20.如下:
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plistversion="1.0">
  4. <array>
  5. <dict>
  6. <key>id</key>
  7. <string>10</string>
  8. <key>name</key>
  9. <string>喜羊羊</string>
  10. <key>image</key>
  11. <string>xiyy.png</string>
  12. <key>info</key>
  13. <string>是一只羊,星座:白羊座,喜欢被灰太狼吃</string>
  14. </dict>
  15. <dict>
  16. <key>id</key>
  17. <string>20</string>
  18. <key>name</key>
  19. <string>灰太狼</string>
  20. <key>image</key>
  21. <string>huitl.png</string>
  22. <key>info</key>
  23. <string>来自北方的狼,星座:猎户座,喜欢吃喜羊羊</string>
  24. </dict>
  25. </array>
  26. </plist>
因为在plist中NPC数据是存在array中,所以这里我选择用Array来读取数据,过程如下:
  1. autom_array=Array::createWithContentsOfFile("info.plist");//读取plist数据,存于m_array数组中
  2. //遍历m_array数组,通过NPC的id找到想要的NPC信息
  3. for(inti=0;i<m_array->count();i++)
  4. {
  5. //从上面的plist内容可以看出,每个NPC的数据是以dic(字典)的方式存于array数组中
  6. autodic=static_cast<Dictionary*>(m_array->getObjectAtIndex(i));
  7. intid=(static_cast<String*>(dic->objForKey("id")))->intValue();//从字典中找到id对应的key值,并转化成int型
  8. //如果id=10,即这个是喜羊羊的id
  9. if(id==10)
  10. {
  11. std::stringname_str=(static_cast<String*>(dic->objForKey("name")))->getString();//读取喜羊羊的名字
  12. std::stringimage_str=(static_cast<String*>(dic->objForKey("image")))->getString();//读取喜羊羊图片
  13. std::stringinfo_str=(static_cast<String*>(dic->objForKey("info")))->getString();//读取喜羊羊的介绍
  14. ...
  15. //下面随便你去折腾
  16. }
  17. }
原文链接:https://www.f2er.com/cocos2dx/339245.html

猜你在找的Cocos2d-x相关文章