1
learningman 2020-05-26 18:59:47 +08:00
你理解了 FPS 的意思吗?
Frame Per Second,你的时间只能是 1s 如果你说你想导出一段视频,那么可以,视频的帧率可以为 60,渲染 1 帧 1 小时都可以 |
2
across 2020-05-26 18:59:48 +08:00
性能不够 60fps 是必然存在的现象。
是你代码写错了。动画时间本来就不应该受帧数影响,是受时钟影响。如果你要固定时间更新,那该用 FixedUpdate 。 |
3
feng32 OP |
6
param 2020-05-26 19:25:29 +08:00 via Android
你的意思就是不跳帧吧。虽然我不知道游戏开放一般怎么称呼的,我只会“跳帧”这个词。
|
7
feng32 OP 视频是固定帧率的,当性能问题出现时,希望 Unity 引擎会 “阻塞”
“阻塞” 消失时,Unity 中的时间不发生跳跃,而是继续渲染下一帧 |
8
across 2020-05-26 19:28:40 +08:00 1
|
10
reus 2020-05-26 19:33:49 +08:00 via Android
我要能固定每秒 60 帧,怎么还会性能不够?你这个要求根本就自相矛盾。
动画放慢一倍,时间自然就拉长了。 |
11
feng32 OP @reus 并不是用 1s 的时间渲染 60 帧然后录屏,而是可以接受用 2s 的时间渲染 60 帧 (但是此时动画时间仍是 1s)
--- 这个流程是不是有点奇怪?我再举个例子: Unity 将画面输出给一个媒体服务器进行视频编码,一开始的 FPS 是 60 fps,Unity 已经执行了 1s 此时 Unity 到视频编码服务器之间的网络断了 1s,此时作为流水线的起点,Unity 程序应当暂停渲染,以保证传输管道不会溢出 (就好像在 Unity Editor 里按了暂停按钮一样) 当真实时间是 2.0s 时,动画时间在 1.0s ,网络恢复了,此时 Unity 不能跳帧;观众则会在画面卡了 1s 后,继续以正常速度观看到后续的动画 |
12
LnTrx 2020-05-26 20:06:21 +08:00
Unity 作为游戏引擎,大家看到自然默认是实时渲染输出。建议楼主在表述的过程中区分清楚“动画播放的时间”和“渲染的物理时间”,否则 FPS 的含义乱套了
|
13
LnTrx 2020-05-26 20:10:52 +08:00
楼主的问题其实是:Unity 是否支持离线渲染
|
14
feng32 OP @LnTrx Offline Render 是一个不错的关键字,可以搜到不少的离线渲染插件
不过一些 Offline Render 插件的描述也挺让人迷惑的,比如这个: Offline Render is an easy to use, realtime capture plugin for Unity 看描述,还是无法区分它到底是实时的还是非实时的 (是否会跳帧) 那么问题来了:Unity 支持不跳帧的离线渲染吗? |
15
Nzelites 2020-05-26 23:38:20 +08:00
我猜楼主的意思是希望帧间(游戏)时间不超过一个值
一个做法是 update 时取实际渲染时间 超过阈值则在该帧对游戏全局时间做一个缩放使(游戏)时间间隔小于等于期望上限 云码农 思路仅供参考 |
16
meowhuang 2020-05-28 20:30:12 +08:00 1
前两天正好有一个类似的需求。我后来是用:Time.captureFramerate 实现的。
https://docs.unity3d.com/ScriptReference/Time-captureFramerate.html 如果楼主只是要录屏的话,Unity Recoder 自带这个功能 |