使游戏对象在编辑器窗口中不可选择

Spy*_*ros 3 c# unity-game-engine

我的场景中有一个淡入淡出面板gameobject,它必须位于所有其他游戏对象之上。但是,当我单击编辑器窗口中的某个对象时,由于该对象gameobject位于所有对象之上,因此是在层次结构中自动选择的对象。

有没有办法将 保持gameobject在画布顶部,就像现在一样,但当我单击场景时使其完全不可选择?

Uma*_*r M 5

您可以使用HideFlagsongameobject使其不可选择:

public class HideFlagsSetter : MonoBehaviour
{
    public Component target;
    public HideFlags customHideFlags;

    public enum Mode
    {
        GameObject,
        Component
    }

    public Mode setOn = Mode.GameObject;

    [ContextMenu("Set Flags")]
    private void SetFlags()
    {
        if (setOn == Mode.GameObject)
        {
            target.gameObject.hideFlags = customHideFlags;
        }
        else if (setOn == Mode.Component)
        {
            target.hideFlags = customHideFlags;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

将 customHideFlags 设置为HideInHierarchy会使其从层次结构中消失,因此您将无法选择它。

编辑:由于该对象将会消失,如果您无法访问脚本,则无法将其恢复。所以这个脚本应该附加到一个持久对象,并且目标对象应该在检查器中设置。

您可以通过单击右上角的齿轮图标并选择“设置标志”来使用上下文菜单选项。它是菜单中的最后一个选项。

阅读更多


希望这可以帮助 :)

(由提问者添加)

我想要一种在编辑器模式下自动发生这种情况的方法。因此,我执行了相同的步骤,但我对脚本进行了一些更改以在编辑器模式下工作。我在类的顶部添加了 [ExecuteInEditMode],还添加了一个 Awake() 方法,该方法执行与 SetFlags 中相同的代码。似乎工作得很好。