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

 CURRENT_PATH=`dirname $`
SCRIPT_PATH=$CURRENT_PATH
RESOURCE_PATH=$CURRENT_PATH/../ccb
CCB_PATH=$CURRENT_PATH/../ccb/Resources
TEMP_OUT=$CURRENT_PATH/out
OUT=$CURRENT_PATH/../res/ccbis if [ -d $OUT ];then
echo "Clean old files..."
rm -rf $OUT/*.ccbi
else
echo "Not found out folder and create it!"
mkdir $OUT
fi echo "Publish .ccbis files..." mkdir $TEMP_OUT for i in $CCB_PATH/*
do
fileName=`basename $i`
if [[ $fileName =~ [a-zA-Z]+\.ccb ]]
then
echo "--- publish >>$fileName<<"
fileNameWithoutExt=${fileName%\.ccb}
$CURRENT_PATH/ccbpublish -o $TEMP_OUT/$fileNameWithoutExt".ccbi" $i
fi
done echo "Move .ccbis files..." mv $TEMP_OUT/*.ccbi $OUT/ rm -rf $TEMP_OUT 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. mysql 权限管理

     参考:    http://www.cnblogs.com/Richardzhu/p/3318595.html 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内 ...

  2. Javascript字典操作

    <script type="text/javascript">        var dic = new Array();      //注意它的类型是Array    ...

  3. DataGrid表格控件

    代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--& ...

  4. uva 558 Bellman_Ford

    Bellman_Ford算法   求图中是否存在负权值的回路   若图中不存在   则最短路最多经过n-1个结点   若经过超过n-1个节点 则存在负权值的回路  此图永远无法找到最短路  每条边最多 ...

  5. C++创建一个动态链接库工程

    前话 在我们安装一些软件时,进入软件安装目录会经常看到.dll格式文件,系统system目录也存在许多dll文件 在软件游戏(window平台)更新的时候,很大部分是下载dll文件 所以会好奇这是什么 ...

  6. C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)

    文件流 FileStream  可读可写  大文件  释放 StreamReader 读取   释放 StreamWriter 写入   释放 using 中释放 File 可读可写  小文件 操作文 ...

  7. php Laravel windows安装

    先要装一个composer, 如果不会装请看这里composer windows可以直接下载composer-setup.exe, 如果安装失败提示"Unable to connect to ...

  8. log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.lo .

    log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a &quo ...

  9. dup和dup2函数以及管道的实现

    疑问:管道应该不是这样实现的,因为这要求修改程序的代码 dup和dup2也是两个非常有用的调用,它们的作用都是用来复制一个文件的描述符.它们经常用来重定向进程的stdin.stdout和stderr. ...

  10. android SharedPreferences apply和commit的区别

    1.apply没有返回值而commit返回boolean表明修改是否提交成功2.apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘3.apply ...