如何让Unity3D生成的安卓包启动更快

Unity生成的游戏包启动确实会比其他引擎慢些,即使打包的时候勾选了Splash Image选项,如果包比较大的话,安卓启动还是会黑屏一段时间才能看到画面。

这种情况是没办法从U3D游戏这边去解决的了,因为这是原生安卓的问题了,需要从SDK这边去解决,网上看到有些资料是在主Activity的onCreate里创建一个view来覆盖Splash,其实完全没必要这么复杂。

只需两步就可以解决:
1.在AndroidManifest文件中设置:

<activity
    android:name=".ui.SplashActivity"
    android:theme="@style/Theme.Splash"
    android:screenOrientation="portrait">
    <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>


2.在style文件中定义:

<style name="Theme.Splash" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen">
    <item name="windowNoTitle">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowFullscreen">true</item>
</style>

然后在src/main/res/drawable下放一张名为splash.png的启动图即可。这张启动图会在你启动APP之后立马显示出来,然后再显示Unity设置的Splash图。

不过这么做的话这张图会有一个问题,那就是和手机的屏幕分辨率不匹配的问题,有可能会拉伸和挤压的情况出现,其实只要这张图中间放一张LOGO其他地方是纯黑色或者白色是看不出来的,也可以使用.9的方式设置图片拉伸区域。

大大缩短了安卓APP的启动时间,据发行反馈这样体验更好。