2

MuMu模拟器运行一段时间后Device.Present耗时突然上升

 9 months ago
source link: https://blog.uwa4d.com/archives/TechSharing_347.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1)MuMu模拟器运行一段时间后Device.Present耗时突然上升
2)​如何在运行过程中获得温度信息
3)Input System鼠标更换主按键的Bug
4)如何禁止Unity向https://config.uca.cloud.unity3d.com发送设备信息


这是第347篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:465082844

Platform

Q:MuMu模拟器运行一段不固定的时间后Device.Present耗时突然上升,其中看Profiler里的有一个加载的信号量等待时间很长,不明白其中原因,想问问是否有朋友可以帮忙解释。

下图是用Profiler记录到的一个过程:

1.png

使用的引擎版本:Unity 2019.4.28f。

MuMu模拟器尝试了32位和64位的多个版本都能复现这个问题,真机和其它模拟器没有遇到。

我们对比相同引擎版本的另外一个项目,发现以下设置似乎会影响这个问题,还不是非常确定,说不确定是因为两点:
1. 这个问题发生时间不确定;
2. 在一个同事的模拟器上只需要将BlitType设置为Always就没有遇到上述问题,而另外一个同事的模拟器需要设置BlitType为Always并且禁用Optimized Frame Pacing。

2.png

A1:我也碰到了相同的问题,目前好像只有关闭Optimized Frame Pacing有效。

感谢JackCheng@UWA问答社区提供了回答

A2:建议尝试,隔一段时间就强制设置一下限帧:

IEnumerator Start()
{
    yield return new WaitForSeconds(10);

    Application.targetFrameRate = 31;

    Application.targetFrameRate = 30;
}

感谢littlesome@UWA问答社区提供了回答

A3:也遇到完全一样的问题。感觉模拟器闲置一边更容易出现(一般十分钟内),一直有操作的话反而不太容易(大约需要一个小时)。

一般情况下,游戏卡死往往模拟器也会很卡,这种卡的情况下,模拟器几乎没啥影响,可以正常开其他东西。怀疑模拟器对Google的这个Optimized Frame Pacing支持不太好,换过更高版本的Android SDK也是无效。

打开这两个选项,的确对手机端的体验有一定提升。

现在想要探索的解决思路是判断Andorid系统版本比较低的情况下,运行时关闭 Optimized Frame Pacing。

目前还没找到运行时关闭的办法。

感谢leviyuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/60ff8b4b4f8c177460154359


Performance

Q:请问如何在运行过程中获得温度?我需要做个功能,如果温度高就降帧和降画质。

A:温度统计的规则还是比较复杂的,因为不同的设备获取到的温度值的数量很不一样(有些只能拿到电池温度,有些可以拿到20多个温度,包含电池、各个CPU、多个GPU、各种传感器等等),所以不同工具虽然获取机制差不多,但算出来的温度应该都会有些差异。

然后工具获取到的温度值和手感温度大多数情况下是不对应的(会出现温度值高,但手感温度不高的情况),所以不太建议把获取的温度值作为准确的发热依据,最好还是用FPS之类可以准确统计的值。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/64c78c710b33622d467d7c84


Script

Q:问题描述:把鼠标右键绑定一个动作名Cancel,此时点右键时能收到事件,然后在设置里把鼠标的主按键换成右键,此时我们的预期是点左键会收到事件,点右键收不到事件,但是在大部分电脑上还是右键收到事件Cancel。

临时解决方案:鼠标按键功能不通过Input System实现,用Input.GetMouseButtonDown来实现。

Unity版本:2020.3
Input System版本:1.3.0
系统:Windows10,Windows11

大家有没有遇到过这个问题,或者有没有解决方案呢?

A1:可能是你的键位映射没有设置好。正常情况下有一个默认键位设置,就是你们原本的。然后外层还有一层供修改的键位设置。一般操作时操作可修改的键位设置。

感谢曼华@UWA问答社区提供了回答

A2:Input System的思路是把代码实现的功能改成配制实现,所以运行时不应该再去修改设置,还有一点就是相同的配制在不同电脑上的表现不一致,如果上层的功能依赖一个不稳定的底层,上层是没有办法修正的。

感谢题主李伟@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/64094a370638540599239575


Platform

Q:Unity转微信小游戏,发现启动的时候会向https://config.uca.cloud.unity3d.com发送请求,影响启动时间。

有没有办法关掉,版本2019,2021。

A:发布设置里看看有没有Disable HW Statistics这样的关键字。

感谢李伟@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/640712a4063854059921ee26

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK