在ios9以后,需要吵铅在info.plist文件中添加 LSApplicationQueriesSchemes(白名单),才能合法启动你想要启动的那正握个app。白名单中添加的,是你想要启动的app的 URL(这个URL就是上面讲解的“注册自己的URL”)。
首先看一下我找到的一些游戏启动过程相关的类接下来我们分析一下游戏启动的 *** 作流程。
ApplicationMgr
对象应该绑定到了一个场景对象中,这个场景应该在游戏启动中加载;
ApplicationMgr:Awake()被
Unity引擎自动调用; 调用ApplicationMgr:Initialize(),在这个函数中顺序调用
了以下成员函数来进行初始化:
InitializeMode():设置模式
为 ApplicationMode.PUBLIC
;
InitializeUnity():设置了UnityEngine. Application 的一些属性;
InitializeGame()
:看来核心的内容在这里,初亏掘始化 Network,GameMgr等; InitializeWindowTitle(); InitializeOptionValues()
游戏启动应该不只这点东西。由于我们纯靠程序集的动态分析,无法知道它的场景编辑、对象的脚本绑定,也不能跟踪调试,所以只能靠猜测了。另外,一些事件是通过网络消息触发的手坦,这也给静态分析带来了一些难度。 OK,我们继续。我注意到了class Login,它从Scene派生。查看了一下Scene的派生类还有不少,我猜测每个派生类,作为特定Scene逻辑处理的脚本。而Login应该是在第0个场景中被激活运行。我们看一下Login:Start(),这属于MonoBehavior自动调用,他主要做了这样几件事: 注册了一些资源版本检测、Login相关的网络消息回调; 通知SceneMgr场景加载完成; 调用成员函数:AutoLogin();此函数调用Network.AutoLogin(); 从配置文件中找到 User Name,然后调用 ConnectAPI.AutoLogin()——奇怪的是发现这个函数只是简单的返回false,并没有进行实际的 *** 作。 我们在来看一下Login:Update(),这个也是属于被自动调用的脚本函数。在这里它检测了Login的状态,并调用了成员函数LoginOk(),而它有主要调用了AssetsVersionCheckCompleted(),这个函数内容很丰富: 通知其他模块,已经登录成功,包括:BaseUI、 InactivePlayerKicker、HealthyGamingMgr、毕空桐GameMgr;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)