禁用图形游戏对象是否可以防止它们受到脚本的影响?
Does disabling graphics game objects prevent them from being affected by scripts?
当玩家不在某个区域内时,我使用框架(边界框)来禁用该区域内的所有游戏对象。我想知道视差脚本是否会影响禁用的对象框架。我不希望玩家进入新帧时背景和前景图层的视差关闭。
稍微偏离主题,但仍然足够相关:我正在将框架构建为无缝过渡;有没有办法防止过渡点的视差重叠?
如您所见,禁用游戏对象上的脚本不会收到更新调用。您可以做几件事:
- 当整个游戏对象超出相机框架时不禁用它,而是只禁用附加的渲染器。这样您的视差脚本仍然会更新。虽然这是否有性能优势值得怀疑,但 Unity 默认会进行 Frustrum 剔除。
- 不要有单独的视差脚本,而是有一个 ParallaxManager,您可以在其中注册所有对象。这个管理器永远不会被禁用,作为一个额外的好处,调用更新的开销更少。
- 不是更新而是在另一个未禁用的对象上启动一些协程。例如,在 Parallax 中,您可以从 Camera 游戏对象启动协程。这样它会继续运行,即使视差被禁用。
- 尝试计算 OnEnable 中的正确位置。这样您仍然可以禁用对象,并且当它们再次启用时它们会出现在正确的位置。
当玩家不在某个区域内时,我使用框架(边界框)来禁用该区域内的所有游戏对象。我想知道视差脚本是否会影响禁用的对象框架。我不希望玩家进入新帧时背景和前景图层的视差关闭。
稍微偏离主题,但仍然足够相关:我正在将框架构建为无缝过渡;有没有办法防止过渡点的视差重叠?
如您所见,禁用游戏对象上的脚本不会收到更新调用。您可以做几件事:
- 当整个游戏对象超出相机框架时不禁用它,而是只禁用附加的渲染器。这样您的视差脚本仍然会更新。虽然这是否有性能优势值得怀疑,但 Unity 默认会进行 Frustrum 剔除。
- 不要有单独的视差脚本,而是有一个 ParallaxManager,您可以在其中注册所有对象。这个管理器永远不会被禁用,作为一个额外的好处,调用更新的开销更少。
- 不是更新而是在另一个未禁用的对象上启动一些协程。例如,在 Parallax 中,您可以从 Camera 游戏对象启动协程。这样它会继续运行,即使视差被禁用。
- 尝试计算 OnEnable 中的正确位置。这样您仍然可以禁用对象,并且当它们再次启用时它们会出现在正确的位置。