Notifications
bg
c
ccc
Other
0
Likes
0
Followers
0
Connections
All
Articles0
Games0
Showcases0
Column0
Jobs0
c
ccc
Aug 12, 2019
unity、flutter新手,请教一下,想要关闭自动调节帧率,按照“https://github.com/UnityTech/UIWidgets#automatically-adjust-frame-rate”的说明做了如下修改,但没有效果
public class GalleryMain : UIWidgetsPanel {
...
protected override void OnEnable() {
...
Window.onFrameRateSpeedUp = () => { Application.targetFrameRate = 120; };
Window.onFrameRateCoolDown = () => { Application.targetFrameRate = 120; };
...
}
}

"V Sync Count" 已改为 "Don't Sync"。

是需要修改Runtime.ui.windows.cs源码吗?还是需要在其他地方修改Window.onFrameRateSpeedUp/Window.onFrameRateCoolDown?

Xingwei Zhu
Software Engineer
4 days ago
@ccc,hi多谢你的测试和回复!针对你回复中提到的移动端performance overlay的FPS统计问题,目前我们比较确定这个问题是因为performance overlay本身的实现问题导致的,因此“performance overlay上的FPS统计很有可能是不准确的”。具体的,performance overlay本身绘制的数据理论上只有在屏幕非静止状态下才会相对准确,这就使得它无法正确反应屏幕静止情况下的实际帧率。这个问题我们之后会fix掉,以免大家被这个数值误导。让你费了这么多功夫,希望你能够谅解!最后,如果要测移动端的FPS的话,最好是用ANdroid Studio或者Xcode自带的profile,这个应该是最准确的了。
c
4 days ago
Reply@Xingwei Zhuhi,如果你这边需要关闭自动调节帧率的话,比较好的方案有:(1)关闭VSync,并且设置Window.onFrameRateSpeedUp = () => {}; Window.onFrameRateCoolDown = () => {}; 或者 (2) 直接打开VSync即可。我们是在Unity 2018.3.11f1版本上测试的。关闭自动调节帧率前,屏幕静止时Editor的stats Panel上的FPS约为25;关闭后,FPS上升为100+,与平时的FPS近似。此外,对你的描述我们有几个地方还不太清楚:(1)你这里指的没有效果具体是什么情况,是指屏幕静止时FPS仍会降到25?(2)你代码中的targetFrameRate为什么要设置为120?
非常感谢指导! 先回答你的疑问: 1.是的,没效果就是指静止时fps会降到25. 2.在文档里说“please set Window.onFrameRateSpeedUp and/or Window.onFrameRateCoolDown to your own functions”,我不确定这里的functions设置为空是否可以,所以照着源码改了一下,把targetFrameRate设为一个较高的值,期望app能运行在一个较高的帧率上。 ============================================ 下面是刚做的一些测试。 unity版本更新太快,所以我这边选的一个较新的LTS版本做的测试:2018.4.6f1(LTS)。 新建项目,然后git clone UIWidgets到Packages目录,在unity里打开Packages/UIWidgets/Samples/UIWidgetsGallery/gallery.unity。做以下三个测试: 测试1: 此时VSyncCount为默认的“Every V Blank”。 在unity里直接点play运行,play窗口的stats里不管动、静都显示的是一两百帧,但gallery app里的的performance overlay上显示的帧率,在静态时约25~30,动起来时帧率会上升。 编译成APK后真机运行也是一样,performance overlay显示帧率静态时约25~30,动起来时帧率会上升。 测试2: 将VSyncCount设为“Don't Sync”,在unity里直接点play运行,play窗口的stats里静态时约25~30,动起来时帧率会上升。performance overlay上显示的帧率和stats接近。 编译成APK后真机运行,performance overlay显示帧率静态时约25~30,动起来时帧率会上升。 测试3: 在上一步的基础上修改Packages/UIWidgets/Samples/UIWidgetsGallery/GalleryMain.cs,在OnEnable函数里的 “base.OnEnable();” 后面添加: Window.onFrameRateSpeedUp = () => {}; Window.onFrameRateCoolDown = () => {}; 在unity里直接点play运行和编译成APK后真机运行的现象和测试1一样。 ============================================ 以上三个测试,根据stats里显示fps,关闭帧率自动调节的方法是有效的;但从performance overlay里显示的fps看,自动调节好像始终开着。
Xingwei Zhu
Software Engineer
4 days ago
hi,如果你这边需要关闭自动调节帧率的话,比较好的方案有:(1)关闭VSync,并且设置Window.onFrameRateSpeedUp = () => {}; Window.onFrameRateCoolDown = () => {}; 或者 (2) 直接打开VSync即可。我们是在Unity 2018.3.11f1版本上测试的。关闭自动调节帧率前,屏幕静止时Editor的stats Panel上的FPS约为25;关闭后,FPS上升为100+,与平时的FPS近似。此外,对你的描述我们有几个地方还不太清楚:(1)你这里指的没有效果具体是什么情况,是指屏幕静止时FPS仍会降到25?(2)你代码中的targetFrameRate为什么要设置为120?
About Me
No description
See more
Skills
No skills added yet
Certifications (0)
Import
See all
ccc's liked projects (0)
No likes yet
Following (0)
Not following anyone yet
Followers (0)
No followers
Following Companies (0)
Not following anyone yet