gpt4 book ai didi

performance - Unity3D Input.GetKeyUp() 轮询效率低下?

转载 作者:行者123 更新时间:2023-12-02 09:31:54 25 4
gpt4 key购买 nike

为什么Unity对所有输入事件都使用轮询,检查每个更新循环是否有新事件,效率不是很低吗?如果我有 1 个 mio 对象在每个更新周期执行此操作,我会假设持续轮询会显着减慢系统速度..

    public void Update() {
if (Input.GetKeyUp(KeyCode.Escape)) {
// escape clicked
}
}

为什么没有这样的事情:

    public void Start() {
Input.addKeyUpListener(KeyCode.Escape, delegate {
// escape clicked
});
}

最佳答案

请注意,每次调用这些方法之一时,Unity 不会轮询系统 - 它会每帧轮询一次,然后缓存该值,如下所示ResetInputAxes功能。

这并不是 Unity 做一些看似疯狂的事情的唯一地方,但在较低级别的代码中可能会更有效 - 请记住,Unity 维护了对运行时的大量自定义(特别是垃圾收集和构造),工作方式与标准 C# 不同。

另请注意,回调逻辑虽然对于处理程序和通常长期存在的对象(例如单例和系统)来说非常有用,但对于通常在游戏的整个生命周期中多次收集和创建的脚本来说并不是那么好。由于 Unity 只公开了用代码编写脚本的能力,因此轮询比使用回调更有意义,回调需要附加、处理和分离行为来防止错误。

关于performance - Unity3D Input.GetKeyUp() 轮询效率低下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32185129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com