微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

有没有一种方法可以将游戏对象保持在画布上,就像现在一样,但是当我单击场景时使其完全无法选择吗?

解决方法:

您可以在gameobject上使用HideFlags使其变为不可选择状态:

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中相同的代码.似乎工作正常.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐