最近遇到一个需求,只有cocos studio导出的UI资源(.csb)文件,但是需要修改UI工程,我就想有没有方案通过csb反推出一个UI工程。首先需要理解csb文件是如何解析的,新建一个简单的cocos工程,创建一个简单的UI工程,导出一个csb文件,然后打断点跟踪代码,发现csb文件的解析代码都在CSLoader.cpp中,重点的方法是nodeWithFlatBuffers。通过nodeWithFlatBuffers递归读取一个树状数据,最后返回根节点,就是UI工程中的Scene或Layer。nodeWithFlatBuffers内部会根据每个节点的信息创建一个reader用来读取节点的基本信息

std::string readername = getGUIClassName(classname);
                readername.append("Reader");
rdName = readername;

NodeReaderProtocol* reader = dynamic_cast<NodeReaderProtocol*>(ObjectFactory::getInstance()->createObject(readername));
node = reader->createNodeWithFlatBuffers(options->data());

createNodeWithFlatBuffers返回创建的node节点,node可能是sprite、layout、ImageView、ListView等,readername不同返回的节点也不同,每个节点都对应一个reader,比如SpriteReader、ButtonReader等。后面是根据子节点的数据依次创建子节点

auto children = nodetree->children();
    int size = children->size();
                 for (int i = 0; i < size; ++i)
                {
                         auto subNodeTree = children->Get(i);
                         Node* child = nodeWithFlatBuffers(subNodeTree);//递归调用

node->addChild(child);

我可以根据这些节点的基本信息重新生成一份xml文件,放回工程中就可以反推出工程了。

源码下载:链接:http://pan.baidu.com/s/1i4ERdYX 密码:exuu

cocos2d 由导出文件.csb反推出cocosUI工程相关推荐

  1. 批量反编译Andorid工程中的XML文件

    用法: java -jar BatchAXPrinter.jar AXMLPrinter2.jar ../res/layout/ 其中 ../res/layout/是你要反编译的XML文件的根目录. ...

  2. 2021 年 6 月程序员工资统计,反作弊算法工程师太可怕了。。

    2021年6月全国招收程序员435501人. 2021年6月全国程序员平均工资15052元,工资中位数13000元,其中96%的人的工资介于1750元到150000元. 这两年虽然平均工资涨了不少,但 ...

  3. 从调试器里观察到的Observable对象反推出其赋值的源代码位置

    展开Observable对象,从其operator能观察到施加在该Observable对象上的操作: Map操作:(event) => this.getBreakpoint(event.targ ...

  4. csb反编译_云服务软件

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. 网狐荣耀版通过水浒传基础二开埃及拉霸和水果森林步骤

    一.工欲善,必先利其器,巧妇难为无米之炊,开发进行开发,首先就要有一套完整的荣耀版最新WaterMargin版水浒传的源码,这 个水浒传源码的原版包括服务器端,客户端,服务器端控制,客户端控制,机器人 ...

  6. 二十世纪最“反直觉”的伟大生物学发现:化学渗透(chemiosmosis)

    你想了解生命起源的最新研究?动物和植物以及细菌间的根本关系?那些生物,化学,物理学综合的领域是满足你好奇心的好地方.全文没有一个化学式.科普好文.文字22000+,估计用时100分钟内. 转载地址:h ...

  7. UNICODE工程中,由十六进制的unicode字符内码转换成unicode字符

    UNICODE工程中,由十六进制的unicode字符内码转换成unicode字符(双字节) 这段程序片段是根据"一种字符串转化为16进制显示的算法"(http://www.cppb ...

  8. 计算机 工程领域的应用论文,工程项目管理中计算机应用论文(共2052字).doc

    工程项目管理中计算机应用论文(共2052字) 工程项目管理中计算机应用论文(共2052字) 1在工程项目管理中应用计算机技术存在的问题 计算机软件是计算机运行的重要保障,一个好的计算机软件直接决定计算 ...

  9. cocos2d: 使用TexturePacker , pvr.ccz, CCSpriteBatchNode, CCSpriteFrameCache

    Optimus:在cocos2d中如何高效使用图片总结 使用Photoshop等工具制作单张图片,放在Resources目录下某个或几个目录下,使用TexturePacker打包图片成pvr.ccz文 ...

  10. Python 反爬篇之 ID 混淆

    爬虫与反爬是一对相生相克的死对头,道高一丈魔高一尺.作为爬虫的一方,如果知道了某个站点的数据自增ID,那么就能轻而易举把整个站点都爬下来.是不是有点耸人听闻,你去看很多大站例如油管.P站等,他们都不会 ...

最新文章

  1. usaco Prime Palindromes
  2. 【Math】P=NP问题
  3. macbook服务器文件,使用MacBook生成服务器使用的p12证书文件
  4. 让oracle做定时任务【转】
  5. 魔术引号 php,php怎么关闭魔术引号
  6. 牛客14392 猴子吃香蕉
  7. cass或cad里提取点坐标及高程的插件_一个坐标计算小程序 EXCEL 可以进行抵偿任意带高斯坐标转换...
  8. 计算机设计大赛国奖作品_4. 界面设计
  9. 魔鬼作坊第一部实践----第九课
  10. 美团技术:交易平台建设实践(视频+胶片)
  11. Oracle查询指定表里的触发器
  12. pyqt5 getsavefilename 默认文件名_经Jerry编程小课堂之python如何安装PyQt5和QT Designer...
  13. 如何最快的销售砖头(2.0版)
  14. 数据库管理员详细介绍
  15. 紫光视频平台服务器系统,紫光展锐打造操作系统生态,赋能万物互联智能时代...
  16. Ubuntu 编译最新LLVM套件:LLVM 16.0
  17. unicode 的geek解释
  18. 机器学习06|两万字:决策树 【jupyter代码详解篇】
  19. 【BZOJ1062】[NOI2008]糖果雨【二维树状数组】
  20. AdGuard过滤规则

热门文章

  1. BTC投资者损失预计达73亿美元 “割肉式”抛售来袭?加密寒冬比预期更冷、更长
  2. 已经出狱的李一男和即将出狱的王欣,还能赶上这个时代吗?
  3. 百度、谷歌高德等网络地图经纬度偏差纠正以及相关坐标系问题
  4. Android实现USB扫码枪获取扫描二维码
  5. 大疆livox定制的格式CustomMsg格式转换pointcloud2
  6. js 调用后台方法 ajax,JS直接调用C#后台方法(ajax调用)
  7. 2021/3/30前端百度笔试题
  8. Javaer换坑指南之Linux
  9. counter计数器
  10. Oracle基本介绍与基本使用