FF
Мыслитель
(5815)
4 года назад
Шейдеры помогут решить такую задачу, ценой быстродействия и времени разработки. Но...
Вы точно понимаете, для чего нужны тэги и слои?
Тэги - инструмент для прототипирования, без них вполне можно обойтись в любом проекте, они не обеспечивают уникальных возможностей.
Слои - ключевой инструмент для решения проблемы "объект А должен игнорировать объект Б", будь то физика или рендеринг.
Как решается ваша проблема:
1) заводится СЛОЙ единственной задачей которого будет скрывать рендереры для главной камеры - этот слой исключается из Culling Mask камеры.
2) к объектам, которые могут быть сокрыты, добавляется компонент, который хранит путь в иерархии до всех скрываемых рендереров на объекте.
3) сами дочерние объекты с рендерерами не должны быть нагружены лишними логическими компонентами, чтобы изменение их слоя никак не повлияло, например, на физику (вы, полагаю, как раз этой проблемы пытаетесь избежать, отказываясь от слоёв).
4) когда выполняется условие для скрытия / раскрытия объекта, управляющий компонент выносит свои дочерние рендереры на скрытый слой, или (при раскрытии) возвращает их на изначальный слой (не обязательно Default - можно сделать чтобы компонент запоминал слои рендереров перед сокрытием).
Если решение вам не подходит, пожалуйста, объясните почему избегаете слоёв - инструмента предназначенного именно для решения таких проблем.
Владислав СидельниковУченик (115)
4 года назад
Спасибо за ответ, способа не подходит, потому что моя задача сделать скрипт, который нужно повесить на камеру, и она без лишних действий будет игнорировать объект, созданный командой Instiantiate()
Xttx
Мыслитель
(9251)
4 года назад
Можно по имени:
GameObject.Find("object_name").SetActive(false);
можно по ссылке
public GameObject obj = null; //<- в инспекторе перетащить нужный объект в это поле
...
obj.SetActive(false);
если не подходит деактивация объекта, можно сделать невидимым через
GetComponent < Renderer >().enabled = false;
Владислав СидельниковУченик (115)
4 года назад
Спасибо за ответ, но мне требуется чуть другое, мне нужно, чтобы в главной камере он был, а во второстепенной - нет. Это решение подходит только для того, чтобы скрыть во ВСЕХ камерах.
Но при этом всё это не должно использовать слои и теги
XttxМыслитель (9251)
4 года назад
Можно написать постпроцессинговвый шейдер, который будет игнорировать объект по определённому параметру (по порогу цвета, например). Но шейдеры с условиями медленные, и я бы всё-таки копал в сторону тегов и слоёв. Почему именно нельзя использовать? Может обойти эту проблему будет проще...