如果你正在使用CocosBuilder或者是其他基于CocosBuilder源码改装而成的工具为你的游戏搭建场景或者UI,那你一定要看看这篇文章:)
 
你是否已经厌倦了无聊的手工publish操作?反正我是受够了。对于我这个懒人,最好的方式莫过于有一个命令行工具,可以让我把publish各种ccb的工作串到我的workflow里面。有了这个想法后,我开始上网搜索,没错,我还真找到了一点线索,在几个人的博客和官方论坛的帖子中,有人提到了这个工具,不过郁闷的是竟然没人肯告诉这个工具究竟藏在什么地方。反正打好包的app里面是没有,于是我下载了CocosBuilder的源码(github地址),想着就算找不到俺自己不能照着原理写一个吗?不过最终发现作者还是大发慈悲的没忍心让我动手,原来在源码的工程中,作者已经写好了这个工具,只是,需要你自己build出来=。=好吧,作者是有多懒…
 
如下图,有一个叫ccbpublish的target,选择这个target,我们把它build出来。铛铛,一道金光,工具入手:)记得在使用之前可能需要chmod一下。
 
接着我们研究一下它的用法,在命令行中带--help参数执行,可以看到如下提示:
这里我们只需要注意-o这个参数就可以了,其他的有兴趣你可以自己研究(我说过我很懒的=。=)
实际上用法是:
  1. ccbpublish -o 输出文件的路径 输入ccbccb文件
比如说,我们的ccb文件在目录home/Xin/ccb1.ccb,要输出到home/Xin/ccbis/ccb1.ccbi,那么我们就只需要:
  1. ccbpublish -o home/Xin/ccbis/ccb1.ccbi home/Xin/ccb1.ccb

OK,知道了用法,我来讲一下实际使用的一个例子和一个写好的bash脚本。

还是使用我们在这系列第一篇里面用到的那个目录,希望你们还记得,不知道的可以进这里,我们需要在上一节那个目录的基础上添加两个目录,一个是ccb,里面存放我们游戏的ccb工程(在这里我们假设我们游戏只使用一个ccb工程,并且这个工程是使用CocosBuilder3.0alpha创建的),另外一个在res目录下的ccbis,里面存放我们生成的ccbi。创建好后应该是下面图这样子的目录结构:

ccb的目录:

为了清楚,我特意用不同的颜色把需要注意的目录都标出来了。

好了,我们说一下我们脚本工具的思路。脚本工具放在tools这个目录中,它运行之后会去ccb这里目录中寻找所有的ccb文件(由CocosBuilder3.0alpha创建的工程ccb会存放到一个如图Resources子目录之下),然后将他们一一publish到res/ccbis这个目录中。下面是这个脚本:
  1. #! /bin/sh
  2.  
  3. CURRENT_PATH=`dirname $`
  4. SCRIPT_PATH=$CURRENT_PATH
  5. RESOURCE_PATH=$CURRENT_PATH/../ccb
  6. CCB_PATH=$CURRENT_PATH/../ccb/Resources
  7. TEMP_OUT=$CURRENT_PATH/out
  8. OUT=$CURRENT_PATH/../res/ccbis
  9.  
  10. if [ -d $OUT ];then
  11. echo "Clean old files..."
  12. rm -rf $OUT/*.ccbi
  13. else
  14. echo "Not found out folder and create it!"
  15. mkdir $OUT
  16. fi
  17.  
  18. echo "Publish .ccbis files..."
  19.  
  20. mkdir $TEMP_OUT
  21.  
  22. for i in $CCB_PATH/*
  23. do
  24. fileName=`basename $i`
  25. if [[ $fileName =~ [a-zA-Z]+\.ccb ]]
  26. then
  27. echo "--- publish >>$fileName<<"
  28. fileNameWithoutExt=${fileName%\.ccb}
  29. $CURRENT_PATH/ccbpublish -o $TEMP_OUT/$fileNameWithoutExt".ccbi" $i
  30. fi
  31. done
  32.  
  33. echo "Move .ccbis files..."
  34.  
  35. mv $TEMP_OUT/*.ccbi $OUT/
  36.  
  37. rm -rf $TEMP_OUT
  38.  
  39. echo "All done!"

都是比较简单的bash脚本,测试的话只需要把上面的脚本拷贝下来,存放到tools文件夹中,然后记得chmod和把后缀改成.command的,这样就可以双击运行刷新了。

有了这个东西之后,就可以完全不需要手工的去GUI里面publish所有的ccb文件了,是不是觉得很爽?

好了,第二篇就这样,有问题留言:)

版权所有,转载请注明出处:)

[原创]使用命令行工具提升cocos2d-x开发效率(二)之CocosBuilder篇的更多相关文章

  1. [原创]使用命令行工具提升cocos2d-x开发效率(一)之TexturePacker篇

    TexturePacker是一个常用的制作sprite sheet的工具,它提供了很多实用的功能. 一般我们制作sprite sheet都是使用他的gui版本,纯手工操作,就像下面这张图示的一样. 刚 ...

  2. 使用命令行工具提升cocos2d-x开发效率 之CocosBuilder篇

    http://www.cnblogs.com/flyFreeZn/p/3617983.html 假设你正在使用CocosBuilder或者是其它基于CocosBuilder源代码改装而成的工具为你的游 ...

  3. [原创]用命令行工具删除TFS2010服务器上的工作区信息

    下面的示例显示有关所有计算机上的所有用户已在地址 http://myserver:8080/tfs/DefaultCollection 上的以下团队项目集合中创建的所有工作区的列表. c:\proje ...

  4. Wireshark命令行工具tshark

    Wireshark命令行工具tshark 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把Data部 ...

  5. 如何用node编写命令行工具,附上一个ginit示例,并推荐好用的命令行工具

    原文 手把手教你写一个 Node.js CLI 强大的 Node.js 除了能写传统的 Web 应用,其实还有更广泛的用途.微服务.REST API.各种工具……甚至还能开发物联网和桌面应用.Java ...

  6. 命令行工具--LLDP

    目录 命令行工具--LLDP 一.场景引入 二.什么是LLDP? 三.在CentOS上安装LLDP 四.命令详解 五.脚本 命令行工具--LLDP 一.场景引入 有的时候,我们需要知道服务器上联交换机 ...

  7. [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]

    [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...

  8. JDK的命令行工具

    Jcmd:综合工具 jcmd -l  列出当前运行的所有虚拟机 参数-l表示列出所有java虚拟机,针对每一个虚拟机,可以使用help命令列出该虚拟机支持的所有命令 jcmd [pid] help j ...

  9. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

随机推荐

  1. 使用Yeoman搭建 AngularJS 应用 (6) —— 让我们搭建一个网页应用

    原文地址:http://yeoman.io/codelab/review-generated-files.html 打开mytodo文件夹,你会看到现在的基架.如下图所示 在mytodo文件夹,我们能 ...

  2. Visual Studio 中TODO List的使用

    http://msdn.microsoft.com/en-us/library/txtwdysk.aspx 工欲善其事,必先利其器 When the Task List is open, you ca ...

  3. Ubuntu 14.04 启用休眠

    Ubuntu 14.04 启用休眠 Ubuntu 14.04 默认不启用关机菜单中的休眠选项.前提是要有swap分区(网上查询,未验证是否一定需要.PS:swap要不小于物理内存)不过首先最好还是确认 ...

  4. android listview判断是否滑动到顶部还是底部

    listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStat ...

  5. Eclipse不能自动编译 java文件的解决方案

    前段时间出现了eclipse 不自动编译java文件的问题,在网上找了好长时间,总算把问题解决了,现在把这个问题的解决方法总结一下. 1,看看project -- Build Automaticall ...

  6. 关于Application.Lock和Lock(obj)

    http://www.cnblogs.com/yeagen/archive/2012/03/01/2375610.html 1.Application.Lock和Application.UnLock一 ...

  7. js监听输入框值的即时变化onpropertychange、oninput

    js监听输入框值的即时变化onpropertychange.oninput 很多情况下我们都会即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感. // //   要达到的效果 ...

  8. raid之理解

    RAID方案有两种,一种是硬件RAID解决方案,一种是软RAID解决方案. 硬件RAID解决方案 1.RAID 0 RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术.R ...

  9. android 电容屏(一):电容屏基本原理篇

    平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...

  10. Unicode汉字编码表

    U+  0   1  2  3  4   5  6   7   8   9   A  B  C  D  E  F  ------------------------------------------ ...