Wing的小站

  • 首页
  • IT新闻
  • 技术文章
  • 生活随笔
  • 休闲娱乐
  • 个人作品
  • 留言板
  • 关于博主
JavaFX,Unity3D,Android,IOS,技术教程,生活随笔
  1. 首页
  2. 技术文章
  3. 正文

Unity3D第一次启动黑屏时间太长

2017年4月23日 10285点热度 0人点赞 0条评论

最近在做一个VR眼镜项目,台北那边反应App第一次启动有很长的黑屏时间,然后才跳转到Unity3D Splash画面,需要解决。

其实这个还是很奇怪的,我尝试了一下以前的Unity3D项目,发现启动直接就是Unity3D Splash画面。不知道是不是Unity3D更新版本后做了什么变动。

仔细查看了一下,现在Unity3D App第一次启动时,会首先在Android/Data/包名下面缓存Shader Cache,大概有80-90个文件。之后启动,将会很快到到Unity3D Splash画面。但如果手动将Shader Cache删除,则启动依然会有很长时间黑屏来写入Shader Cache。

这个应该就是黑屏时间长的原因了。虽然我在当前设备上测试第一次也就大概3秒左右,可台北反映有10秒以上...

大概是设备的差异,但问题还是要解决的。

这个问题需要我们写Android的插件,然后自己手动将Unity3D Splash覆盖掉。

代码如下:

public class MainActivity extends UnityPlayerActivity {
    private ImageView bgView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        super.onCreate(savedInstanceState);
        try {
            bgView = new ImageView(UnityPlayer.currentActivity);
            bgView.setImageResource(R.drawable.loading);
            bgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            mUnityPlayer.addView(bgView, getRealWidth(), getRealHeight());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
       public void hideSplash(){
        new Handler(Looper.getMainLooper()).post(new Runnable() {
            @Override
            public void run()
            {
                mUnityPlayer.removeView(bgView);
                bgView=null;
            }
        });
    }

在这里我只是简单的增加了一个ImageView,将整个画面覆盖,我们需要在Unity3D的Scene中将这个ImageView移除掉,来显示我们的3D场景。当然,这个启动界面你可以显示Gif或者其他自定义内容,来让效果看的更好。

		void Start () {
		AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		AndroidJavaObject jo = jc.GetStatic ("currentActivity");
		jo.Call ("hideSplash");
	}

这样就能勉强解决这个问题了。

希望Unity后续版本能够改进这个问题,不过当前Unity3D支持的Android最低版本已经变更为Android 4.1了,大概也在进行Android旧设备的淘汰了。

标签: Unity 黑屏时间太长
最后更新:2017年4月23日

wing1314

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 Wing的小站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备17006951号-1

42011102000591