【已解决】cocos2d-x3.0rc0 lua入口文件问题

步骤:
1.用cocos2d-x3.0rc0 新建lua工程
2.编译启动执行正常
3.修改lua入口文件main.lua,将所有代码注释掉,只打印一条消息
4.重新执行工程,运行的还是之前的main.lua代码

5.新建一个test.lua,将ua入口文件改成engine->executeScriptFile(“src/test.lua”);
6.重新执行工程,运行test.lua代码
7.将lua入口文件改回engine->executeScriptFile(“src/main.lua”);
8.重新执行工程,此时运行修改后的main.lua代码

ps:用源码自带的lua-empty-test测试,问题依旧

找到原因了

3.0新工程目录结构
frameworks
res
runtime
src

src存放脚本,即lua文件,res存放资源,即图片

但是在windows编译后,自动把res和src里面的内容拷贝到frameworks\runtime-src\proj.win32\Debug.win32\Resource里了,

以后程序每次运行都读取这里的脚本,因此在最外层的src里修改脚本,程序是读不到的,除非重新编译工程。

只想说:太蛋疼了!!!!!!!!!!!!!!!!!!!!!!!!!!!

简单解决一下这个问题

我的项目路径F:\cocos2d-x-test\mygame-cocos3.0

包含文件夹
frameworks
res
runtime
src

1.将vs工程的配置 Working Directory指向F:\cocos2d-x-test\mygame-cocos3.0, 即…

2.将F:\cocos2d-x-test\mygame-cocos3.0\frameworks\runtime-src\proj.win32\Debug.win32\Resource目录下的.lua文件(不包括src文件,这里只是cocos自己定义的库)拷贝到F:\cocos2d-x-test\mygame-cocos3.0

这时重新启动项目就可以用了,不过F:\cocos2d-x-test\mygame-cocos3.0目录下多了一堆.lua代码,看起来很恶心。

3.新建一个cocoslib文件夹,将这些.lua代码移入,将cocoslib文件夹移动到src目录下,最终目录为F:\cocos2d-x-test\mygame-cocos3.0\src\cocoslib

4.打开cocoslib下的lua文件,将require第地方加上路径前缀,即require"Cocos2d.lua"改成require “src.cocoslib.Cocos2d.lua”,等等。

5.修改c++代码,CCLuaEngine.cpp bool LuaEngine::init(void) 函数,
路径改成
executeScriptFile(“src/cocoslib/DeprecatedEnum.lua”);
executeScriptFile(“src/cocoslib/DeprecatedClass.lua”);
executeScriptFile(“src/cocoslib/Deprecated.lua”);

6.重新编译工程就可以了。

3.0 rc0的lua版本已经发布了吗
好像官网只看到3.0 rc0的c++版和js版?

3.0rc0 就是啊,可以生成c++工程和lua工程,跟以前的比只不过把js绑定移除了,单独发布了一个3.0js版

我看官网news说lua绑定也开了一个新的分支
是不是lua以后也会出一个单独的版本
目前的可能还不完善?

作为和c++如此紧密的lua,还不如用和以前一样的目录结构,Resources里面的内容由开发者自己来决定就好。
本来win32版就可以很自由地随改随测,弄成现在这样只能和mac版一样,用VS编译之后,把res和src目录删除后,做个目录连接到原来的res和src,然后每次C文件有修改重新编译都要重新做一次,麻烦。

使用目前的结构是因为会提供一个模拟器,大部分lua开发者就不需要关心c++代码了。组里只需要有专门的人来维护和扩展runtime就可以了。

每次编译都会将lua拷到根目录下,3.0的目录确实恶心。

:12: 今天才遇见这个问题 倒腾了半天无语了 之前找的姿势不对没看见问题 以为只有我遇见了 结果…:10: