Сделать объект нельзя выделить в окне редактора
У меня есть fadepanel gameobject
в моей сцене, которая должна сидеть поверх всех других игровых объектов. Однако, когда я нажимаю на объект в окне редактора, так как этот gameobject
находится поверх всех, это тот, который автоматически выбирается в иерархии.
Есть ли способ сохранить gameobject
поверх холста, как это происходит прямо сейчас, но сделать его полностью невыбираемым, когда я нажимаю на свою сцену?
1 ответ:
Вы можете использовать
HideFlags
ongameobject
, чтобы сделать его невыбираемым: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
приведет к тому, что он исчезнет из иерархии, поэтому вы не сможете его выбрать.Edit: поскольку объект исчезнет, нет никакого способа вернуть его обратно, если вы не можете получить доступ к скрипту. Таким образом, этот скрипт должен быть прикреплен к постоянному объекту, а целевой объект должен быть установлен в инспекторе.
Вы можете использовать опцию контекстного меню, нажав на значок шестеренки в верхней части экрана. в правом углу выберите пункт "установить флаги". это последняя опция в меню.
Надеюсь, это поможет :)
(ДОБАВЛЕНО ЛИЦОМ, ЗАДАВШИМ ВОПРОС)
Я хотел, чтобы это произошло автоматически в режиме редактора. Поэтому я сделал те же шаги, но немного изменил сценарий, чтобы работать в режиме редактора. Я добавил [ExecuteInEditMode] поверх класса, а также добавил метод Awake (), который выполняет тот же код, что и в SetFlags. Кажется, работает просто хорошо.