gpt4 book ai didi

c# - Unity中启用、isActiveAndEnabled和activeInHierarchy的区别

转载 作者:可可西里 更新时间:2023-11-01 08:06:30 26 4
gpt4 key购买 nike

我不敢相信这个问题还没有在某处被问过;相当彻底的谷歌搜索没有结果。 Unity 文档说明了有关 Behaviour.isActiveAndEnabled 的内容。 field :

Has the Behaviour had enabled called.
True while the behaviour is enabled, false when disabled.



它说的是关于 Behaviour.enabled :

Enabled Behaviours are Updated, disabled Behaviours are not.
This is shown as the small checkbox in the inspector of the behaviour.



因此,一篇文章只是详细说明了“启用”的含义比另一篇更重要。据我所知,这些字段在完全相同的条件下为真/假!那么区别是什么呢?你什么时候会使用一个?澄清将不胜感激!

最佳答案

isActiveAndEnabledenabled对于初学者来说似乎很困惑,我敢打赌大多数人仍然不知道它们之间的区别以及何时使用它们。我就是这些人中的一员。

需要理解的两件事:

A.GameObjects 可以被激活和取消激活。

B. 可以启用和禁用脚本。
isActiveAndEnabled中的关键字应该解释这一切。

每个属性会发生什么:

1 .对于 Behaviour.enabled ,这是真值表:

  • GameObject = Active AND Script = Enabled 然后 Behaviour.enabled =
    真的。
  • GameObject = Active AND Script = Disabled then Behaviour.enabled =
    错误的。
  • GameObject = Inactive AND Script = Enabled 然后 Behaviour.enabled =
    真的。
  • GameObject = Inactive AND Script = Disabled then Behaviour.enabled =
    错误的。

  • 没有 如果 GameObject 没关系脚本附加到为 Behaviour.enabled 激活或停用返回真。重要的是附加到游戏对象的脚本或组件是启用还是禁用。

    2 .对于 Behaviour.isActiveAndEnabled ,这是真值表:
  • GameObject = Active AND Script = Enabled 然后 isActiveAndEnabled =
    真的。
  • GameObject = Active AND Script = Disabled 然后 isActiveAndEnabled =
    错误的。
  • GameObject = Inactive AND Script = Enabled 然后 isActiveAndEnabled =
    错误的。
  • GameObject = Inactive AND Script = Disabled 然后 isActiveAndEnabled =
    错误的。

  • 事项如果 GameObjectBehaviour.isActiveAndEnabled 启用或禁用返回真或假。为了 Behaviour.isActiveAndEnabled返回 true ,脚本/组件附加到的游戏对象必须处于事件状态,并且必须启用脚本。如果其中任何一个是错误的,那么 Behaviour.isActiveAndEnabled将返回 false .

    编辑 :

    When would you want to get enabled and NOT isActiveAndEnabled?



    您使用 enabled检查脚本是否启用/禁用。您还可以使用它来启用或禁用脚本。根据您的游戏逻辑,有时您会禁用/启用脚本。例如,当 GameObject 在屏幕上不再可见,但您附加了一个脚本,该脚本在 Update() 中进行大量计算。功能,您可以禁用该脚本,然后在游戏对象可见时重新启用它。
    isActiveAndEnabled是只读的。你只能用它来检查两个脚本是否都是 enabled游戏对象 它附属于 active .您不能使用它来启用或激活游戏对象。
    if (myScriptInstance.isActiveAndEnabled)if (myScriptInstance.gameObject.activeSelf && myScriptInstance.enabled) 的简写但是 isActiveAndEnabled使您的代码更短且更易于阅读。

    Between GameObject.activeInHierarchy and Behaviour.enabled, one has all the information one needs to check state.



    并不真地。这些是您在使用 Unity 时肯定需要的非常不同的变量。我不认为你明白什么 GameObject.activeInHierarchy是用来。要检查游戏对象是否处于事件状态,请使用 GameObject.activeSelf不是 GameObject.activeInHierarchy .要激活/停用游戏对象,请使用 GameObject.SetActive(true/false);
    3 . GameObject.activeInHierarchy 以及何时使用它 :

    对于下表,pObj = Parent GameObject 和 cObj = Child GameObject 并且 GameObject.activeInHierarchy 正在 Child GameObject 上执行。
  • pObj = Active AND cObj = Active 然后 GameObject.activeInHierarchy =
    真的。
  • pObj = Active AND cObj = Inactive 然后 GameObject.activeInHierarchy =
    错误的。
  • pObj = 非事件 AND cObj = 事件然后 GameObject.activeInHierarchy =
    错误的。
  • pObj = Inactive AND cObj = Inactive 然后`GameObject.activeInHierarchy =
    错误的。
  • GameObject.activeInHierarchy几乎就像 isActiveAndEnabled .它取决于两件事 true .父游戏对象必须处于事件状态。正在执行检查的 GameObject(Child) 也必须处于事件状态。如果其中任何一个是错误的,那么 GameObject.activeInHierarchy将返回 false .

    您使用 GameObject.activeInHierarchy检查提供的 GameObject 是否处于事件状态,同时检查其所有父项是否也处于事件状态。如果 GameObject 没有父对象,则只需使用 GameObject.activeSelf . GameObject.activeSelf只会检查游戏对象是否处于事件状态。它不会像 GameObject.activeInHierarchy 那样检查父级.

    关于c# - Unity中启用、isActiveAndEnabled和activeInHierarchy的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708014/

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