项目场景:
用Unity做的app发布的ios和Android版本,ui做屏幕自适应,来适配多机型,unity版本是2019.4,用的UGUI。
问题描述:
极个别机型有个偶发的问题,就是在app息屏,再开屏的时候,会出现半边屏幕被压缩,半边屏幕黑屏的问题,但是ui交互的位置还是正常的,bug效果图如下:
跟这张图一样的
<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">
原因分析:
出现这个问题也很是疑惑,后来分析发现只是显示渲染出问题了,ui交互的位置还是没变,因为我们的app是设置的只能横屏使用,而且横屏是根据陀螺仪来判断横屏的方向的,下面是我unity发布的时候setting里面的设置
在出现这个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;
}
}
也不知道这个方案是不是旁门左道,如果有更好的解决方案的大佬,还请多多指点。
就先讲到这里吧,好记性不如烂笔头,如果有问题可以随时联系我。欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。