active=false а как-же true ?

Программирование на Юнити.

Re: active=false а как-же true ?

Сообщение Serge 09 июл 2010, 11:37

Как вариант, присвоить всем нужным объектам определенный таг. В инициализации, либо в другом удобном месте, найти все объекты по тагу (см. документацию) и поместить в массив. Затем далее в коде все время работать именно с массивом нужных объектов.
Еще вариант использовать префабы, создавать, когда нужно и удалять когда нужно, вместо скрытия.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: active=false а как-же true ?

Сообщение Zaicheg 09 июл 2010, 12:03

benzin писал(а):И все же как сделать скрытие всех объектов, которые находятся в группе. Прописывать каждый объект это немного трудомкий процесс, т.к. их тысячи.

Что за "группа"? Если речь о дочерних геймобъектах, то вот два вариант.

Первый. Отключаем им рендер:
MeshRenderer[] mr = gameObject.GetComponentsInChildren<MeshRenderer>();
for (int i = 0; i < mr.Length; i++) mr[i].enabled = false; // скрываем
for (int i = 0; i < mr.Length; i++) mr[i].enabled = true; // показываем снова

Второй. Отключаем сами объекты:
gameObject.SetActiveRecursively(false);
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение benzin 09 июл 2010, 12:09

Спасибо! Но это немного не то. Все равно придется каждый объект прописывать, имена объектов разные.
Разве нельзя отключать группы. Отключаем родительский объект и отключаются все его дочерние? :ympray:
Аватара пользователя
benzin
UNец
 
Сообщения: 20
Зарегистрирован: 09 июл 2010, 08:22

Re: active=false а как-же true ?

Сообщение Zaicheg 09 июл 2010, 12:21

benzin писал(а):Спасибо! Но это немного не то. Все равно придется каждый объект прописывать, имена объектов разные.
Разве нельзя отключать группы. Отключаем родительский объект и отключаются все его дочерние? :ympray:

Я сейчас не ругаюсь матом только потому что не помню его. Читайте мой код и справку до просветления. Или до посинения.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение benzin 09 июл 2010, 12:28

Zaicheg писал(а):
benzin писал(а):Спасибо! Но это немного не то. Все равно придется каждый объект прописывать, имена объектов разные.
Разве нельзя отключать группы. Отключаем родительский объект и отключаются все его дочерние? :ympray:

Я сейчас не ругаюсь матом только потому что не помню его. Читайте мой код и справку до просветления. Или до посинения.


Спасибо! Я просто не видел твоего сообщения! :ymparty:
Аватара пользователя
benzin
UNец
 
Сообщения: 20
Зарегистрирован: 09 июл 2010, 08:22

Re: active=false а как-же true ?

Сообщение Guzyano 09 июл 2010, 14:01

Если со статическими то лучше их не искать а выставить сразу в массиве
Если с динамическими объектами -

Как вариант можно в массив() при создании объект добавлять а перед Destroy удалять и не использовать Find вообще. А потом оперировать с масивом как угодно. Сама прелесть () в том что в него вообще добавить можно что угодно.

() конечно чуть хуже чем [] но на мой взгляд лучше в него добавить один раз чем вызывать FindWithTag для 1000 обьектов и возвращать их в []. хотя я пользуюсь FindGameObjectsWithTag и если часто не вызывать и для умеренного колличества обжектов с идентичными тагами то вполне нормально.

то - же касаеться и дочерних объектов
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт

Re: active=false а как-же true ?

Сообщение Zaicheg 09 июл 2010, 14:34

Что это за набор иконок?
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение Guzyano 09 июл 2010, 14:39

Это не набор иконок я писал там две квадратные скобки. это так автоматом поменялось просто на пустые квадраты а яписал [ ] - BuiltinArray короче
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт

Re: active=false а как-же true ?

Сообщение benzin 10 июл 2010, 11:23

В итоге самый простой способ скрыть объекты это переместить их по оси Y, другого адекватного способа я не нашел. :-$
Аватара пользователя
benzin
UNец
 
Сообщения: 20
Зарегистрирован: 09 июл 2010, 08:22

Re: active=false а как-же true ?

Сообщение Zaicheg 10 июл 2010, 12:28

benzin писал(а):В итоге самый простой способ скрыть объекты это переместить их по оси Y, другого адекватного способа я не нашел. :-$

Щито?! Вам чем способ с отключением мешрендера не угодил? Ну или с рекурсивным отключением, если нужно скрыть и для физики+логики. Я вообще не представляю, какой ситуации может быть адекватно перемещение этих объектов.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение Neodrop 10 июл 2010, 12:34

А ещё можно в слой запихать, который камера не видит. ;;)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: active=false а как-же true ?

Сообщение Zaicheg 10 июл 2010, 12:49

Neodrop писал(а):А ещё можно в слой запихать, который камера не видит. ;;)

Кстати, да. Хороший метод. Надо мне тоже начинать слоями помаленьку пользоваться.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение benzin 10 июл 2010, 18:21

Neodrop писал(а):А ещё можно в слой запихать, который камера не видит. ;;)


в слой можно, но только опять же отключается один объект
Аватара пользователя
benzin
UNец
 
Сообщения: 20
Зарегистрирован: 09 июл 2010, 08:22

Re: active=false а как-же true ?

Сообщение Zaicheg 10 июл 2010, 18:41

benzin писал(а):в слой можно, но только опять же отключается один объект

Transform[] tr = gameObject.GetComponentsInChildren<Transform>();
for (int i = 0; i < tr.Lenght; i++) tr[i].gameObject.layer = x;

Вам уже два решения дали, которые полностью покрывают Вашу задачу. Может уже откроете юнити и попробуете что-нибудь? )
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: active=false а как-же true ?

Сообщение benzin 10 июл 2010, 23:20

Спасибо Вам большое! :ymparty:
Аватара пользователя
benzin
UNец
 
Сообщения: 20
Зарегистрирован: 09 июл 2010, 08:22

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 13