【步兵 cocos2dx】教你搭建一个嗖嗖的lua项目

来源:互联网 发布:乐乎公寓ifeng 编辑:程序博客网 时间:2024/05/01 01:11

【步兵 cocos2dx】教你搭建一个嗖嗖的lua项目 By EOS.

最开始,我决定要吐槽,吐一个大大的槽~ 用cocos new 新建一个lua项目竟然运行不起来~
就服cocos,我怀疑这不是一个引擎公司,而是一个游戏公司。搞的跟我们一样,一直往前推进度,
bug么~等有人反馈了,再改改,没人提就接着推~这样的态度做引擎,真是让开发者提心吊胆,
旧得功能说废掉就废掉,然后自己再搞个新的,新出的又bug太多,两套都一块用说不定又出新bug。
我们有一个引擎~but!我们有3套ui框架,我们有2套音频引擎~不同的接口,不同的效果~任性从我做起!
(ps: 开发者:哎呀!setTexture怎么报错啊~__ 触控:用loadTexture~这接口比较优雅)

哎~,不行了,不能再说了,感觉能写一万字来吐槽,根本停不下来。
cocos作为一个引擎来说,学习代价太大,因为总是出新东西,而一个引擎应该是稳定的,
让使用者专注于实际开发,而不是开发中还要附带解决各种引擎的问题,我去等cocos 8.0稳定版了 =、= (跑


先建个新项目

cocos new MyGame -p com.your_company.mygame -l cpp -d NEW_PROJECTS_DIR

如是,就新建出一个cpp项目了,大家都懂得。但是你标题不是说一个“嗖嗖的lua”项目么。
额~因为直接建lua项目,会直接把c++编译出的dll库,不方便调试c++部分。
就算你对底层代码有足够的信心,有时候直接在c++这边打个断点,也比你用lua调试强得多。
(ps: lua调试很不错,我选择打log)


添加lua支持

去 cocos引擎解压路径,拷贝一些资源到项目中(以下 pro视为项目名)

  1. 拷贝 cocos2d\cocos\scripting\lua-bindings 文件夹 到项目对应路径
  2. 拷贝 external\lua 文件夹 到项目对应路径
  3. 拷贝 tests\lua-empty-test\src 中测试代码到 pro\Resources\src
  4. 拷贝 scripting\lua-bindings\script 到 pro\Resources\src,并重命名为 cocos
  5. 别忘了 lua-empty-test 把资源考过来,光代码跑个毛线的项目=、=

用vs打开项目

  1. 添加现有项目:pro\cocos2d\cocos\scripting\lua-bindings\proj.win32
  2. 在pro添加对 libluacocos2d 的引用
  3. 添加C++包含路径:
    $(EngineRoot)external\lua\tolua
    $(EngineRoot)external\lua\lua
  4. 添加c++预定义:_USRLUASTATIC

额~别着急运行,不改点代码,根本不会调用lua文件,就直接奔helloworld.cpp去了~

  1. 打开AppDelegate.cpp
  2. //director->runWithScene(scene); //注释掉c++启动代码
  3. 添加lua启动代码:
    LuaEngine* engine = LuaEngine::getInstance();
    ScriptEngineManager::getInstance()->setScriptEngine(engine);
    lua_State* L = engine->getLuaStack()->getLuaState();
    lua_module_register(L);
    FileUtils::getInstance()->addSearchPath(“src”);
    FileUtils::getInstance()->addSearchPath(“res”);
    engine->executeScriptFile(“hello.lua”);
    //这部分代码 主要参照新建的lua项目,不管以后cocos怎么改,你知道去哪找就行了
  4. 添加lua文件搜索路径 package.path
    auto resPath = FileUtils::getInstance()->myResPath();//自己修改源码添加个方法,获取下路径
    engine->addSearchPath((resPath + “/src”).c_str());
    //添加在 executeScriptFile 之前
  5. 开始跑项目~

不出意外的话,等编译结束,就应该可以跑起来了。
至于其他平台需要修改的部分,也参照一个 新建的lua项目,哪报错改哪。


让项目变嗖嗖快

本来想打róu róu快,真是不打不知道,一打吓一跳。。竟然没有这个字= =、

直接运行会发现,在debug目录会有一份拷贝的资源,然后运行的时候会用这拷贝的资源。
资源越多拷贝越慢,这显然直接影响了我们效率,罪魁祸首是 pro.vcxproj 中的 xcopy,注释掉他。
我们删掉debug中已经拷贝过来的资源,再运行~ 很好,资源不拷贝了,效率提高了,
然后项目也找不到资源了=、=。。。。莫怕,在AppDelegate下添加下搜索路径就可以了。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)    engine->addSearchPath("C:/Work/pro/Resources/src");    FileUtils::getInstance()->addSearchPath("C:/Work/pro/Resources/src");    FileUtils::getInstance()->addSearchPath("C:/Work/pro/Resources/res");#endif

因为调试用,所以直接写绝对路径就可以拉。除非你要发window的安装包~
再运行下就没有问题了~这样就可以用vs+babelua进行开发了。
vs乃宇宙第一ide,绝对比sublime强多了,就书签、转到定义、前后导航这三个功能,
就能大幅提高开发速度,没书签感觉找东西好费劲,转到定义+前后导航,开发如丝般顺滑~


让项目变嗖嗖快–第二档

大家应该都知道,【调试】和【运行不调试】速度上的差异,大多数不报错或调试或查看数据,
我们一般都会选择【运行不调试】,无论启动还是运行,速度都快上很多。
还有更快的方法呢?当然有,双击exe运行!!
but,有人说,我就喜欢看 “日志输出如雨下”的快感~
么关系,cocos提供了一个 simulator ,喜欢的同学,可以去参考新建的lua项目配置下。

为什么我不教呢? 因为 山人自有妙计 =、=
知道tail命令的话,应该不难想出我的方案~ 没错,写入一个固定文件,然后用tail -f 来监听它。
话说tail不是linux的命令么,window有么,不防用Eeverthing(文件搜索工具)来搜一下~
你就会发现,git/bin下边就提供了这么一个tail.exe文件,正好供我们使用。

所以逻辑实现后开一个cmd,直接tail -f -s0 file来监听这个文件就可以了。
(ps: 如果不 -s 0 默认是1秒刷新一次,并不能及时的打印出log)
然后把项目的exe文件 锁定到任务栏,直接运行,妥妥的,又效率 又带log。
再也不怕bug信息被海量的log给冲刷掉,而且还可以把这些log备份,
用nodepad++ 或 sublime 来指定路径搜索, ERR LOG,无处可藏~
这里写图片描述

如果用vs code这种内置终端的编辑器,那就更舒爽了~
这里写图片描述

至于log怎么打那还不看你自己么。 ^0^
这里写图片描述


总结

并不是对js抵触,而是对lua有莫名的情感=、=,人都是有惰性的,再加上creator的坑还不知道多深,
而且谁知道下次升级是不是学了白学,总之暂时没有研究creator的打算。。
而且就在准备发博客十几分钟前,看到cocos论坛的一个官方帖子,有意思了~~~
这里写图片描述
哈哈,自己体会~(ps:我的内心毫无波动,以至于我发不出一个波动镖 =。=)

See Again~
之前
真爱无价,欢迎打赏~
这里写图片描述

0 0
原创粉丝点击