unreal3启动地图设置

在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其实也是多年积垢,混乱不堪啊。

原文地址:https://www.cnblogs.com/wellbye/p/5332392.html