美文网首页
程序员啰嗦随笔: ios-集成cocos引擎

程序员啰嗦随笔: ios-集成cocos引擎

作者: 麒麟欢 | 来源:发表于2017-11-25 15:45 被阅读0次

    20170-11-25 周六 

            前段时间离职,然后花了一周的时间找工作。在找工作的过程中发现了自己很多的不足和需要改进的地方。细细反思在前一家公司的工作感觉进步不大,总结下来有两点。第一点: 人很懒 没有主动的去学习和了解新的知识变化 第二点:对于自己做的东西没什么总结和进步。所以希望自己以后每一周的周末都能记录下当周解决的问题。

            我马上要负责的一个项目是做一个游戏平台。所以这一周主要的工作是完成对应的难点调研,主要是了解 点击下载游戏 然后就能够玩游戏的过。因为我们的游戏是用cocos开发的,大家都知道cocos开发的游戏是可以跨平台的,那么我怎么才能模拟这个过程,在原生的界面能够调起cocos这个游戏呢?

             刚开始也是一脸懵逼,完全不知道如何去处理。这个时候沟通就显得特别重要。首先我找到我们这边的技术大牛 问了一下,他讲了一下思路: 把cocos 引擎做成静态库 引入工程,然后基础的C++ 部分都抽出来 搭成框架,然后就差不多了! 大佬就是大佬,听完我还是一脸懵逼。但是好歹有了一个方案。 然后我去问我们这边做资深cocos的开发,如果我要做出这样的一个功能 他需要提供给我cocos里面什么东西。然后他给了我一堆文件,

            有了这些文件 ,我就直接在百度里面直接 搜索 ios集成cocos引擎,然后在一个论坛上一位大哥做过类似的功能,也是将 cocos 工程 打包成 .a 的静态库,然后暴露出里面的 .h文件 供人调用。不管三七二十一 先跟着做,熟悉一下是怎么样的一个情况😂。结果在跟着 完成 cocos_lib.a 的文件的时候,出现了很多编译上面的错误. 我解决了一个 就 出现一堆 红色。那个心塞啊。怎么办,继续百度呗(stackoverFlow 公司太慢了),然后看到简书的一篇文章 也是将cocos的工程给集成到了ios的工程,但是不是打包成.a的文件而是 直接把相关文件直接引入到对应的工程,死马当活马医吧,照着这边文章在来一次,然后还是各种编译错误,人都要疯了。但是在这个过程中,我去比较了 打包 和 不打包的两种方法的异同。发现无论是打成.a 的包还是直接映入文件涉及到的文件内容 是一样的,也就是说两种方法本质是一样的,只是我哪里做错了。

            这个时候 我继续做了一个事情就是沟通,我把我们的技术大牛叫来,然后说了下我 想 打成.a的包 但是失败了,希望能够指点。然后了解到这样做涉及到了cocos的一个.cl(针对引擎加速的) 的文件 但是 ios 不支持。我应该自己下一个cocos的引擎,然后建一个 空白的工程,来做相关的实验。这个时候才意识到,做这种调研 就应该 从最简单的Demo 情况去探索。 接下来的就是记录技术了。

            由于我是最开始开发的,选了一条比较简单的路走的。 首先下载一个cocos-x引擎,然后根据官网文档,建一个cocos的工程。打开这个proj_ios.mac 文件,然后直接运行一次! 如果 碰到了一些错误,可以更换 里面的 libluajit.a 文件 (百度原因可搜索到)。直接把对应的工程运行起来,会看到cocos的引擎起来的一个界面。

     接下来 更具App 启动周期 找到 是在哪个位置 启动cocos的,我发现是在AppController 里面,如图的代码! 

            看这段代码 主要是吧 cocos 引擎跑起来,然后把界面显示在一个 RootViewController 上,那么问题就简单了,自己新建一个 控制器,作为创建的根控制器。 然后把里面的 C++ 的代码 有 点击按钮控制,这里主要注意一点的 是 oc 和 C++ 混编的时候,.m文件必须得改成 .mm 文件。

    接下来 就是没什么问题了,但是由于我们现在cocos工程集成到了项目里面来的,如果我想 下载后 然后 运行,那怎么处理, 首先 我吧工程里面文件的 remove references 去掉引用,然后把对应的 res文件和 src 文件 都丢到沙盒里面去了。 然后找到对应的 AppDelegate.cpp的c++ 文件 这个是cocos 的 入口 

               主要现在是 需要找到 src 里面的”main.lua“, 这里的getWritablepath 方法 是得到 写入路径(ios 里面的沙盒路径),然后设置搜索路径 为 res 和 arc 这样两个文件夹 ! 那么一切ok 。 

            接下来 我把 我们cocos游戏两个包 丢到沙盒, 发现 还需要把一部分C++代码 需要集成到工程,因为在做网络基础库 是用C++写的供对应的 代码调用,那么现在是怎么样 让lua 代码 能够调 C++ 的文件呢! (我在想 既然cocos 能调用 我这边也应该可以,原来 cocos 研发已经完成了 C++ 到lua的绑定,实际我这边需要做的也是这个绑定)

    这个位置是完成了 lua 对 C++一些文件的注册,然后 解决的问题,就ok! 实际在这个时候 我发了一段时间来解决应用的问题, 经常会出现 class refrence 的问题 ,就我觉得的办法 大致就是: 找不到 头文件 user header Search Paths , 如果出现 .o 文件的编译错误, 那么 如果该文件存在 的话 那么 是可以 compile Sources 和 Link Binary With libraries 添加对应的 引用库和 文件! ! ! 好啦,今天大概的啰嗦到这!

    相关文章

      网友评论

          本文标题:程序员啰嗦随笔: ios-集成cocos引擎

          本文链接:https://www.haomeiwen.com/subject/balcbxtx.html