在编辑器窗口中使游戏对象无法选择

时间:2018-02-07 07:27:33

标签: c# unity3d

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

有没有办法让gameobject保持在画布的顶部,就像现在一样,但是如果我点击我的场景,它会完全无法选择吗?

1 个答案:

答案 0 :(得分:4)

您可以HideFlags使用gameobject使其无法选择:

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;
        }
    }
}

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

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

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

Read more

希望这会有所帮助:)

(由提出问题的人士补充)

我想要一种方法让它在编辑器模式下自动发生。所以我做了相同的步骤,但我改变了脚本以便在编辑器模式下工作。我在类的顶部添加了[ExecuteInEditMode],并添加了一个Awake()方法,该方法执行与SetFlags中相同的代码。似乎工作得很好。