【问题标题】:Performance of calling gameObject.SetActive(true) when game object is already active?游戏对象已激活时调用 gameObject.SetActive(true) 的性能?
【发布时间】:2018-07-25 14:22:22
【问题描述】:

调用MyAlreadyActiveGameObject.SetActive(true) 是否有任何性能问题,例如,每帧一次?

换句话说,是否值得向上拉gameObject.active 支票?或者缓存/检查_alreadyActive

【问题讨论】:

  • 绝对是一个过早优化的例子。如果您对此感到担心,请创建一个测试用例并分析结果。
  • 好问题。这个问题对我来说似乎不像是过早的优化。它是 Unity 中的单一基础功能,而不是软件中的一段复杂代码。似乎是一个值得投入几分钟的功能,以便您了解它。不过,创建测试用例可能是过早的优化。

标签: unity3d


【解决方案1】:

如有疑问,请先尝试简单的方法,看看它是否有效。有时值得关注优化,但您应该检查它是否是必要的努力。 Unity 的内置分析工具可以让您估计每个操作在每个帧中花费的时间。

调用MyAlreadyActiveGameObject.SetActive(true) 是否有任何性能问题,例如,每帧一次?

确实需要时间,但并不多。如果您每帧执行数百或数千次,则可能值得担心。在那之前,这种担忧应该可以忽略不计。

如果您担心大量对象的性能,您可以考虑为远处、看不见等的对象暂停代价高昂的行为。

【讨论】:

  • 如果一个对象非常复杂并且有很多孩子,那么调用 SetActive 的行为可能会非常昂贵。激活对象可能需要几秒钟。
  • @off99555 这听起来像是一个非常不寻常的例子。我的回答侧重于更常见的场景。
猜你喜欢
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多