广播接收器:
?123456789101112131415 package com.yangshidesign.boot import android.content.BroadcastReceiverimport android.content.Contextimport android.content.Intent public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, UnityPlayerNativeActivity.class) //这个必须添加flags i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(i) } }
在manifest的application标签里面配置:
?1234567 <!-- 开机启动 --><receiver android:name="com.yangshidesign.boot.BootReceiver"><intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.HOME"/></intent-filter></receiver>
加上权限:
?1 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
你好,1,修改/etc/rcN.d (N=0,1,2,3,4,5,6)7个运行级别中K和S开头的文件名,K代表关,S代表开
2,例如,图形界面不需要开nfs,到/etc/rc5.d找到S23nfs,修改为s23nfs
(小写s就代表不开,如果在想开,就把小写改回来)
首先看一下我找到的一些游戏启动过程相关的类接下来我们分析一下游戏启动的 *** 作流程。
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条)