个人版的Unity是无法关闭Splash Screen的,可以通过addView到UnityPlayer最顶层来覆盖unity的Splash Screen。
可以看到在UnityPlayer类的构造函数中,判断了Splash是否可用然后创建view并添加到UnityPlayer中,那么能不能修改getSplashEnabled的返回值来实现目的呢。
可以看到getSplashEnabled方法其实是读取了AndroidManifest.xml文件中的metadata的值,这个文件是在unity打包后生成的,路径是:yourprojectpath\Library\Bee\Android\Prj\IL2CPP\Gradle\unityLibrary\src\main\AndroidManifest.xml,可以手动修改unity.splash-enable的值为False,打包之后果然没有走构造方法中的创建splashScreen,但是开启应用依然能看见splashScreen,那是因为unity在native渲染层也判断splashscreen,并通过swapViews方法加入到unityplayer
虽然无法关闭splashscreen,但是可以在unity的splashscreen上面再添加一个view就可以实现遮挡了,进入之后在unity中再remove这个view就行了。
创建自定义UnityPlayer并继承UnityPlayer,重写构造方法然后添加自定义的SplashView,再提供隐藏SplashView的方法供Unity端调用,再次打开之后只会显示自定义SplashView了。