3.0rc0版本的cocos2d-x创建的lua版本与以往的版本文件夹结构不同:
- frameworks
- cocos2d-x cocos2d-x的源文件
- runtime-src
- Classes 项目c++源文件
- proj.android android平台工程文件
- proj.ios_mac ios_mac平台工程文件
- proj.win32 win32平台工程文件
- proj.linux linux平台工程文件
- res 资源文件
- runtime
- src lua源文件
并且编译过程中利用了编译脚本做了一些资源素材的拷贝工作,例如吧src文件夹下的lua脚本和res文件夹下的素材文件拷贝到工程资源目录下.
其中win32平台的编译脚本在vs的工程设置中可以看到:

1
2
3
4
5
6
7
8
|
if not exist "$(OutDir)" mkdir "$(OutDir)"
if exist "$(OutDir)\Resource" rd /s /q "$(OutDir)\Resource"
mkdir "$(OutDir)\Resource"
mkdir "$(OutDir)\Resource\src"
mkdir "$(OutDir)\Resource\res"
xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script" "$(OutDir)\Resource" /e /Y
xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\Resource\src" /e /Y
xcopy "$(ProjectDir)..\..\..\res" "$(OutDir)\Resource\res" /e /Y
|
把src拷贝到输出目录/Resource/src
下,
把res拷贝到输出目录/Resource/res
下,
把cdx框架中的lua源文件拷贝到输出目录/Resource
下.
对应的android工程的拷贝配置文件为frameworks/runtime-src/proj.android/build-cfg.json
.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
{
"ndk_module_path" :[
"../../cocos2d-x",
"../../cocos2d-x/cocos/",
"../../cocos2d-x/external",
"../../cocos2d-x/cocos/scripting"
],
"copy_to_assets" :[
"../../../src",
"../../../res",
"../../cocos2d-x/cocos/scripting/lua-bindings/script/"
]
}
|
可以通过修改目录结尾是否带/
符来控制复制的是文件夹还是文件夹下的所有文件.
在ios工程中由于资源路径可以和文件夹路径无关,所以工程中直接引入了,不需要拷贝.
了解了以上复制规则,我们就可以根据自己的需要更改拷贝目录的规则了.
比如我想向以前一样,不需要把lua的源文件和资源文件分为不同的文件夹,放在Resource同级就好了.那么我们可以修改win32的脚本为:
1
2
|
xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\Resource" /e /Y
xcopy "$(ProjectDir)..\..\..\res" "$(OutDir)\Resource" /e /Y
|
android的修改为
1
2
3
4
5
6
7
8
9
10
11
12
13
|
{
"ndk_module_path" :[
"../../cocos2d-x",
"../../cocos2d-x/cocos/",
"../../cocos2d-x/external",
"../../cocos2d-x/cocos/scripting"
],
"copy_to_assets" :[
"../../../src/", //带分隔符表示文件夹下的文件,而不是文件夹
"../../../res/",
"../../cocos2d-x/cocos/scripting/lua-bindings/script/"
]
}
|
或者你可以根据自己的需要用luajit编译自己的lua文件,等等操作都可以放在这些脚本里.