2019-01-10

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前面带一个横杠字符,可添加多个空格隔开即可。

2019-01-10_第1张图片

lua层打印:

方法二:创建bat文件启动exe文件,可以创建多个bat文件每个里面设置不同的参数

2019-01-10_第2张图片

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

四、工作中的用途:

比如你想在电脑上开多个游戏客户端,每个客户端使用不同的账号登陆,就可以自动获取启动参数然后填充账号,用途当然不仅限于此,发挥你的想象吧~

你可能感兴趣的:(2019-01-10)