Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏
  v5bEezpf7PPs 2023年11月02日 135 0

项目场景:

用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。

问题描述:

极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:

Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏_解决方案

跟这张图一样的

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

原因分析:

出现这个问题也很是疑惑,后来分析发现只是显示渲染出问题了,ui交互的位置还是没变,因为我们的app是设置的只能横屏使用,而且横屏是根据陀螺仪来判断横屏的方向的,下面是我unity发布的时候setting里面的设置

Unity发布IOS发布Android版本出现屏幕问题 UGUI半屏被压缩 另一半黑屏_横屏_02

在出现这个bug的时候,如果再次手动反转手机,使其自身陀螺仪发生改变,app界面会重新刷新下朝向,也恢复正常了。

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">

解决方案:

遇到问题先去看有没有前车之鉴,去google,但是答案并不理想,网上大佬们的方法也尝试了下,感觉不是太行,于是自己通过观察”在出现这个bug的时候,如果再次手动反转手机,使其自身陀螺仪发生改变,app界面会重新刷新下朝向,也恢复正常了。“这个现象,出了套解决方案,也算是暂时解决了。我会在每次恢复挂起的unity线程的时候,去主动的刷新下app朝向的问题,经过测试,之前出bug 的机型也没有相关问题了,下面是代码

private void OnApplicationPause(bool pauseStatus)
    {
        if (pauseStatus)
        {
            SaveDataToLocal.Instance.SaveAccountData(UserData.Instance.ifFirstJoin, UserData.Instance.CurrentBigClassLeve, MainUIModel.Instance.ifOpenAudio, UserData.Instance.ifFinishGuide1, UserData.Instance.ifFinishGuide2, UserData.Instance.isFirstInNewLevel);
            //Screen.orientation = ScreenOrientation.PortraitUpsideDown;
            //息屏开屏后,屏幕自动旋转刷新
            if (Input.deviceOrientation == DeviceOrientation.LandscapeLeft)
                Screen.orientation = ScreenOrientation.LandscapeRight;
            else 
                Screen.orientation = ScreenOrientation.LandscapeLeft;
        }
        else
        {
            Screen.orientation = ScreenOrientation.AutoRotation;
        }
    }

也不知道这个方案是不是旁门左道,如果有更好的解决方案的大佬,还请多多指点。

就先讲到这里吧,好记性不如烂笔头,如果有问题可以随时联系我。欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs