在defaultengine.ini中[URL]节:
Map=MOBATinyMap.udk
LocalMap=MOBATinyMap.udk
这里有Map和LocalMap两个属性,让人有点混淆,只好看看代码找差别。
首先有个FURL类,负责表示启动时的地图参数,在它里面就有DefaultMap和DefaultLocalMap两个静态成员。
在UGameEngine::Init之初,就调用了FURL::StaticInit(),这里面对上述两静态成员做了初始化,也就是从ini文件中读取对应配置。
而UGameEngine::Init最后,就是调用Browse加载第一张地图,对地图来源URL的处理逻辑则是:
1、FURL DefaultURL,构造一个默认对象,这时它的Map属性设成等于静态变量DefaultMap
2、检查命令行参数,当前token是不是一个地图名,如果是就把它填到DefaultURL里去
3、如果不是,则把FURL::DefaultLocalMap填到DefaultURL里去
由此可见,ini里的Map项其实完全没用!
真是蛋疼的一逼,顺带吐槽下,上述逻辑的代码还不只一处,在UGameEngine.Init里有,然后在LaunchEngineLoop.cpp里还有个GetStartupMap函数,里面的代码是一样的。可见u3其实也是多年积垢,混乱不堪啊。