cocos2dx-lua工程设置启动参数
一、C++层获取exe启动参数,然后让lua引擎执行参数字符串
在AppDelegate文件的applicationDidFinishLaunching()方法中添加如下代码(写在executeScriptFile("main.lua")之前即可):
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
std::string s = std::string("__launch_args = [[");
bool bisSkipFisrt = false;
bool bisFirst = true;
for (int i = 0; i < __argc; ++i)
{
if (bisSkipFisrt){
wstring ws(__wargv[i]);
string _s;
_s.assign(ws.begin(), ws.end());
if (!bisFirst)
s.append(",");
s.append(_s);
if (bisFirst) {
bisFirst = false;
}
}
if (!bisSkipFisrt){
bisSkipFisrt = true;
}
}
s.append("]]");
engine->executeString(s.c_str());
#endif
二、在lua层获取第一步设置的启动参数
lua引擎执行__launch_args后是一个全局的变量在lua层可以直接获取到;定义一个方法,将原始的参数字符串转化为表
function GT.getWin32LaunchArgs()
local t = {}
if __launch_args then
print("__launch_args = ", __launch_args)
local t_args = string.split(__launch_args, ",")
for i=1,#t_args,2 do
t[t_args[i]] = t_args[i+1]
end
end
return t
end
原始参数如下:
三、如何设置exe启动参数
方法一:创建一个exe文件的快捷方式,右键属性在目标后面添加参数,key前面带一个横杠字符,可添加多个空格隔开即可。
lua层打印:
方法二:创建bat文件启动exe文件,可以创建多个bat文件每个里面设置不同的参数
bat文件内容
set DIR=%~dp0
%windir%\system32\cmd.exe /c start runtime\win32\SimpleGame.exe -autologin 0 -username garyxuan1994
添加了2个参数autologin username ,值分别是0和garyxuan1994,可根据自身需求添加
如果想一次启动多个客户端,则可以新建一个bat文件,调用其他bat,文件内容如下(文件名根据实际名称):
call _run1.bat
ping 1.1.1.1 -n 1 -w 1 > nul
call _run2.bat
ping 1.1.1.1 -n 1 -w 1 > nul
call _run3.bat
ping 1.1.1.1 -n 1 -w 1 > nul
call _run4.bat
四、工作中的用途:
比如你想在电脑上开多个游戏客户端,每个客户端使用不同的账号登陆,就可以自动获取启动参数然后填充账号,用途当然不仅限于此,发挥你的想象吧~
网友评论