Files
XCEngine/docs/api/XCEngine/Scripting/ScriptEngine/GetRuntimeFixedDeltaTime.md

57 lines
2.0 KiB
Markdown
Raw Normal View History

2026-04-08 16:07:03 +08:00
# ScriptEngine::GetRuntimeFixedDeltaTime
**命名空间**: `XCEngine::Scripting`
**类型**: `method`
**头文件**: `XCEngine/Scripting/ScriptEngine.h`
## 签名
```cpp
float GetRuntimeFixedDeltaTime() const;
```
## 当前语义
返回 `ScriptEngine` 当前持有的运行时固定步长配置值,也就是 `m_runtimeFixedDeltaTime`
它的来源当前只有两类:
- [SetRuntimeFixedDeltaTime](SetRuntimeFixedDeltaTime.md) 写入的正值
- 默认回退值 [DefaultFixedDeltaTime](DefaultFixedDeltaTime.md)
## 生命周期行为
- 启动前如果已配置非默认值,[OnRuntimeStart](OnRuntimeStart.md) 会在内部 stop/start 之间保留这份配置。
- [OnRuntimeStop](OnRuntimeStop.md) 结束后,该值会重置为 [DefaultFixedDeltaTime](DefaultFixedDeltaTime.md)。
- 调用 [SetRuntimeFixedDeltaTime](SetRuntimeFixedDeltaTime.md) 并传入非正值,也会立刻回到默认值。
## 与 `OnFixedUpdate()` 的区别
这个 getter 返回的是“配置的固定步长”,不是“某次具体 fixed tick 传进来的参数”。
当前 [OnFixedUpdate](OnFixedUpdate.md) 仍使用调用方显式传入的 `fixedDeltaTime` 参数驱动脚本生命周期;如果上层把两者配置成不同值,脚本回调收到的 delta 与这里返回的配置值就可能出现偏差。
## 托管侧可见性
Mono 运行时的 `Time.fixedDeltaTime` 当前就是通过内部调用直接读取这个 getter因此它也是托管脚本看到的固定步长配置值。
这也是为什么测试里会同时区分:
- `FixedUpdate()` 里通过 `Time.deltaTime` 观察到的本次 fixed tick delta
- 以及通过 `Time.fixedDeltaTime` 观察到的当前配置值
## 真实行为依据
- `engine/src/Scripting/ScriptEngine.cpp`
- `engine/src/Scripting/Mono/MonoScriptRuntime.cpp`
- `managed/XCEngine.ScriptCore/Time.cs`
- `tests/Scripting/test_mono_script_runtime.cpp`
## 相关文档
- [SetRuntimeFixedDeltaTime](SetRuntimeFixedDeltaTime.md)
- [DefaultFixedDeltaTime](DefaultFixedDeltaTime.md)
- [OnFixedUpdate](OnFixedUpdate.md)