【步兵 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视为项目名)
- 拷贝 cocos2d\cocos\scripting\lua-bindings 文件夹 到项目对应路径
- 拷贝 external\lua 文件夹 到项目对应路径
- 拷贝 tests\lua-empty-test\src 中测试代码到 pro\Resources\src
- 拷贝 scripting\lua-bindings\script 到 pro\Resources\src,并重命名为 cocos
- 别忘了 lua-empty-test 把资源考过来,光代码跑个毛线的项目=、=
用vs打开项目
- 添加现有项目:pro\cocos2d\cocos\scripting\lua-bindings\proj.win32
- 在pro添加对 libluacocos2d 的引用
- 添加C++包含路径:
$(EngineRoot)external\lua\tolua
$(EngineRoot)external\lua\lua- 添加c++预定义:_USRLUASTATIC
额~别着急运行,不改点代码,根本不会调用lua文件,就直接奔helloworld.cpp去了~
- 打开AppDelegate.cpp
- //director->runWithScene(scene); //注释掉c++启动代码
- 添加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怎么改,你知道去哪找就行了- 添加lua文件搜索路径 package.path
auto resPath = FileUtils::getInstance()->myResPath();//自己修改源码添加个方法,获取下路径
engine->addSearchPath((resPath + “/src”).c_str());
//添加在 executeScriptFile 之前- 开始跑项目~
不出意外的话,等编译结束,就应该可以跑起来了。
至于其他平台需要修改的部分,也参照一个 新建的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~
之前
真爱无价,欢迎打赏~
- 【步兵 cocos2dx】教你搭建一个嗖嗖的lua项目
- 【步兵 cocos2dx】lua绑定
- 【步兵 lua】简洁的排序
- 【步兵 lua】利用脚本的优势
- [cocos2dx-lua]cocos2dx-lua环境搭建
- cocos2dx-lua项目的构建、编译细则
- 【步兵 cocos2dx】texturePacker命令行
- 【步兵 cocos2dx】自动化测试
- 运用Sublime Text开发cocos2dx-lua项目的lua部分
- 【步兵 lua】模拟继承
- H5发展嗖嗖的
- 【步兵 cocos2dx】四叉树碰撞算法
- 【步兵 cocos2dx】加密和混淆
- cocos2dx-3.0建立lua项目
- cocos2dx+lua编译Android项目
- lua脚本调用cocos2dx项目中自定义的C++类
- 使用AndroidStudio部署Cocos2dx-Lua项目的处理方法
- 天气怎么冷嗖嗖的
- 虚析构函数的用处
- 如何读书阅读--每天一本书计划
- React Native开发之调试
- 基于VBS、ASP环境下的BASE64 Encode 和 Decode
- 深度商店下载的安装包位置
- 【步兵 cocos2dx】教你搭建一个嗖嗖的lua项目
- java web项目,配置log4j显示日志和执行sql信息
- vue 打包的问题
- 【LeetCode】34. Search for a Range
- 很全的maven介绍
- Linux awk的用法
- Android跨应用启动
- MAC下搭建PHP客户端,测试发布话题
- Android 网络详解(二) HTTP协议