怎么在cocos一体化软件包是什么意思中追加最新的3.12版本

访问内容超出本站范围,不能确定是否安全

本站内容均为本站转发,已尽可能注明出处。因未能核实来源或转发内容图片有权利瑕疵的,请及时联系本站,本站会第一时间进行修改或删除。 QQ :

Wenderlic的那篇文章也翻译完了。但实际上工作还没有结束。游戏开发者应该没人愿意像前文那样,把图片和音乐资源存储在公开的文件目录下,被人拷走就能轻易被山寨了。所以这篇里我们先来讲下怎么对资源进行打包,最后和程序混在一起,编译成一个二进制文件发布。这个资源打包工作是uPhone机制提供的。

一、图片和音乐资源打包

关闭按钮的正常状态图片

关闭按钮被点击时的图片


2. 将需要使用的图片和音乐添加到资源编辑器中

  • 首先,单击图中 1 所示的"Bitmaps"标签,进入图片资源编辑分页;
  • 然后,右击图中 2 所示的空白区域,弹出如图中 3 所示的菜单,选择“添加图片”,即可选择图片加到资源比编辑器中。
  • 添加成功后,图中 2 所示的空白区域会把已添加的图片名字列出。
  • 使用同样的方法添加音乐资源(mp3,wav等),但注意第一步选资源类型时,应点到"Raw data"标签内

3. 对添加的资源进行编译

    在资源编辑器中,点击界面左上角的闪电符号按钮,对资源进行编译。

注意:在进行编译之前,需要讲使用的图片、音月资源文件添加到代码的Visual Studio工程中,添加后Visual Studio工程的文件视图如下:

    通过上面的几个简单步骤,我们就完成了资源打包。这样我们的游戏在编译完成后,资源和代码就在同一个二进制包里了

二、在cocos2d游戏中使用打包的资源

    资源打包的工作完成了。接下来我们就可以在cocos2d游戏中使用这些资源了。使用前,我们先了解一下普通的Uphone应用是如何使用打包资源的

1. 普通Uphone应用使用打包资源的方法

所以,在Uphone应用中只要使用如下代码就可以加载图片资源了:

    上面的资源调用方法对cocos2d-x开发者来说功能不够强、不够跨平台,也不能很好地解决不同分辨率匹配不同资源的问题。同时,用资源ID调用的方法比较类似于windows mobile,而对于习惯了cocos2d-iphone的开发者来说,文件名会更符合一些。所以我们做了一个哈希表来实现 文件名(key)-> 资源ID(value) 的映射,cocos2d-x开发者只要实现填写好这份映射,然后游戏里就可以用文件名来调用资源,甚至不用理会这个资源是暴露在文件目录里还是打包编译在资源包里。 

(1) 首先,建立一个资源名称字符串与资源ID的映射

这里面@WVGA的资源,将在下一篇文章中解释

(2) 其次,需要让游戏引擎“知道”这个映射关系的存在:

(3)  第三,需要让游戏引擎“知道”当前的上下文

    在上面我们了解了普通Uphone应用通过TResource类来获取上下文资源。现在游戏引擎已经“知道”了打包资源的ID,但是还需要让游戏引擎“知道”当前的上下文信息,它才能根据资源ID获取数据。具体做法如下

并在initCocos2d() 函数中,在上面步骤(2)的基础上,把代码改成

之所以需要两步,是因为cocos2d处理图像,cocosDenshion处理音频,是两个不同的库。

(4) 最后,就可以使用打包的资源了

实际上,对于按照前面教程开发的代码,在这里就不用修改一字了。

在 Uphone 平台下,游戏引擎根据图片名称创建 Texture 的逻辑为:根据传入的字符串先在设置的ResInfo映射表中查找是否有相应的资源ID,如果存在则加载并成功返回;如果不存在,则到文件目录下查找同名文件,若还是找不到则加载失败。

1. 如果打包的资源都是直接进行使用的话,在ResInfo这个映射里的资源名称可以随意设定。但是,当打包的图片资源是被 .plist / .tmx / .fnt 等配置文件指定要使用的图片时,资源名称就不能随意设定了。示例如下:

实际上,我们已经把Cocos2dSimpleGame的安装包配置文件保存为Cocos2dSimpleGame\pak\Cocos2dSimpleGame.TG3_IProc了,您可以从安装包制作工具里点“从文件加载”,并选择上述的TG3_IProc文件,就可以看到所有参数应如何填写。然后,点图中左下角的“生成安装包”,就会生成一个Cocos2dSimpleGame.TGI安装文件。这就是最后结果了。可以直接拷到手机里安装,或者发布到应用商城里。

《如何用cocos2d-x来开发简单的Uphone游戏 》这系列教程到这篇就结束了。后面我会从cocos2d-iphone上翻译更多的cocos2d-x文章过来。最后,祝所有用cocos2d引擎的开发者:游戏卖座、大把赚钱!

著作权声明:本文由原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢! 

  cocos2dx的3.x版本已经提供了更好地绑定方式,网上有很多相关的教程,这里给一个链接:。

  由于目前我们的项目使用的是2.x版本的,且已经开发了一半了,这时候不适合转3.x的版本,于是只能用2.x的老方法tolua++来实现绑定。这就有一个蛋疼的问题,太麻烦!每次都要写pkg、使用tolua++.exe解释器编译生成新的cpp,在其中添加自己的类的头文件引用,然后把这个新的cpp文件覆盖到liblua中以前的,再编译库,生成新的obj,才算完事。这里给出木头大神的文章,里面写的很清楚:。

  可是我不想每次都这样麻烦,我希望在自己的工程里添加绑定的接口,这样每次运行时只更新我自己的项目,就可以让lua识别我的类。初一想,那就把“LuaCocos2d.cpp”这个类放到项目中如何,这个想法完全可以的,即我们新的绑定就不再添加到“LuaCocos2d.cpp”这里了,而是单独生成一个新的、只有我们自己的的绑定类接口的一个类放到工程中。好了,废话不多说,看流程


  1】首先在我们自己的项目中创建一个文件夹,专门存放对lua的绑定接口类以及相关文件:LuaAPI

  2】创建一个pkg文件,这个文件我们只创建一个,作为基础调用,用来给tolua++使用的,我们待会会详细说明

  3】将cocos2d-x-2.2.3\tools\tolua++目录下的三个文件拷贝到1】中创建的文件里,这是工具,用来生成用的,这个不能少

这些文件的作用,在相关绑定的文章里有详细介绍,这里稍微提一下:

basic.lua里面规定了tolua++解释器在解析pkg文件时候的附加规则

build.sh脚本命令,用来启动tolua++解释器解析pkg生成我们需要的那个cpp文件。这里需要改动,因为拷贝了一份在这个目录下,所以路径都变了,这里要注意。

这里有个"api/LuaAPI.cpp",这是我们指定的要生成的cpp文件,即生成LuaAPI.cpp放在“api/”目录下(在我们创建的LuaAPI文件夹下)

build.bat批处理程序,实际上就是执行build.sh里的设置,同样的,路径要改一下:

  4】此时,工具已备齐,命令也写好了,接下来我们要定义一个类,这个类是类似于pkg的描述文件,只不过以后我们的绑定类都按照pkg的格式写在这个里边,而不是写好多的pkg,并添加到cocos2d.pkg中。

//这里存放下一个自定义类的pkg描述

那么创建这个类有什么用呢:用来给tolua++去解析编译的,而tolua++只能编译pkg,所以我们要把这个类加到API.pkg中

  5】经过之前的四步,现在直接点击“build.bat”,就会根据我们写的“PkgDiscription.h”,生成我们要的“LuaAPI.cpp”文件了,是在api/目录下

  这里面有我们在PkgDiscription.h中声明要绑定的函数接口。但是发现有错误!!

  原因是:在PkgDiscription.h中写的自定义类MyProperty并不是我们真正的自定类,它只是一个pkg描述,那么直接的解决办法是:在LuaAPI.cpp中引入我们的头文件“MyProperty.h”

  但是这样不好,每次生成的时候都需要再次引入头文件,麻烦,但是pkg提供了生成的时候就引入头文件的办法,就是在API.pkg中添加头文件。

但是这样还不好,因为每有一个新的需要绑定的自定义类,我们都需要这API.pkg中引入,这样麻烦,那么我们就创建一个总的头文件类,专门放头文件:PkgHeadFiles.h

//在这里引入我们工程中定义的类(准备给lua用的)

  6】到这里基本已经大功告成了,但是还有一步,就是我们自己生成的LuaAPI.cpp文件,是怎么给lua使用的呢,那么只需要知道引擎本身的LuaCocos2d.cpp是怎么给lua使用的就好了。

直接添加会报错,说找不到这个函数,那么新加的tolua_API_open在哪里呢,其实是在我们生成的LuaAPI.cpp中,所以为了方便,我们写一个LuaAPI.h,里面之声明一下这个函数(单单是为了方便而已)

好了至此,我们的api目录下的文件如下:

当项目完成以后后两个头文件可以删除,现在它只是方便书写而已。

  这样,每次需要修改文件时,在“PkgHeadFiles.h”引入我们自定义的类,在“PkgDiscription.h”中添加pkg描述,然后运行一下build.bat即可。都是在我们自己的工程中操作的,上传svn。

我要回帖

更多关于 软件包是什么意思 的文章

 

随机推荐