Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
11 / 9 / 8
Регистрация: 08.05.2013
Сообщений: 140

Unity2d, отключение и включение объектов, C#

09.06.2018, 12:45. Показов 7009. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня. Пытаюсь сделать следующее - есть этажи и комнаты, при нажатии на двери хочу отключить "floor" и включить "room". Изначально игрок появляется на этаже, он активен, а вот комната скрыта, галочка убрана в инспекторе. При переходе, дабы не искать все коллайды этажа, отключать их, потом убирать SpriteRenderer, пытаюсь сделать так:

C#
1
2
3
4
5
6
var stay = GameObject.Find("Room");
stay.SetActive(true);//на эту строку указывает ошибка
 
foreach(GameObject floor in floors){
    floor.SetActive(false);
}
Но выдает ошибку:
NullReferenceException: Object reference not set to an instance of an object

На просторах находил что включают и выключают stay.SetActive(true) или stay.gameObject.SetActive(true). Но обе строчки не работают. Подскажите как правильно сделать. Может все же придется перебирать все коллайды, выключать их, потом отображение спрайта?

Добавлено через 29 минут
С этим разобрался. Проверил, что включенные объекты выключаются. Тогда сделал комнаты включенными на заднем слое, заранее инициализировал и в методе Start() скрыл, теперь они включаются. Выходит из под кода нельзя увидеть выключенные объекты?
В принципе вопрос снят. Но если можно, подскажите - у этажа свои коллайды у комнаты свои, и приходится подгонять по уровню их границы, дабы персонаж не проваливался или не застревал при переключении с этажа в комнату. Ине всегда выходит. Как лучше, делать небольшой телепорт персонажа на пару сантиметров выше при переходе?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2018, 12:45
Ответы с готовыми решениями:

Включение\отключение звука
Добрый день еще раз. Кто знает, как можно отключить системный звук? Ну и обратно включить следовательно, что бы можно было повесить...

Включение/отключение сайта
Здравствуйте, прошу вашей помощи Есть мой сайт, нужна возможность включать/отключать его Выключение уже сделал через .htaccess, теперь...

Включение / отключение прокси
Добрый день! Постоянно требуется вкл./откл. прокси в LAN Settings -> use a proxy server for your lan. Создал батник, где в реестре...

3
109 / 81 / 37
Регистрация: 13.01.2016
Сообщений: 409
09.06.2018, 12:57
C#
1
GameObject.Find
находит только активные объекты, то есть она не найдёт объект, если он отключен. Я обычно создавал публичную переменную и перетаскивал туда выключенный объект.

Вообще можно создать массив, потом загрузить все объекты и по тегу/названию добавить их в него, затем ненужные отключить и и подгружать, по мере необходимости. Только немного замедлит запуск
0
11 / 9 / 8
Регистрация: 08.05.2013
Сообщений: 140
09.06.2018, 13:17  [ТС]
Ну уже так и сделал.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
09.06.2018, 13:44
Цитата Сообщение от el zurdo Посмотреть сообщение
отключение и включение объектов
Для поиска объектов по имени можно воспользоваться следующим методом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    /// <summary>
    /// Finds active and inactive objects by name
    /// </summary>
    public static GameObject FindObject(string name, bool bOnlyRoot)
    {
        GameObject[] pAllObjects = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
 
        foreach (GameObject pObject in pAllObjects)
        {
            if (bOnlyRoot)
            {
                if (pObject.transform.parent != null)
                {
                    continue;
                }
            }
 
            if (pObject.hideFlags == HideFlags.NotEditable || pObject.hideFlags == HideFlags.HideAndDontSave)
            {
                continue;
            }
 
#if UNITY_EDITOR
            if (Application.isEditor)
            {
                string sAssetPath = UnityEditor.AssetDatabase.GetAssetPath(pObject.transform.root.gameObject);
                if (!string.IsNullOrEmpty(sAssetPath))
                {
                    continue;
                }
            }
#endif
 
            if (pObject.name == name)
                return pObject;
        }
 
        return null;
    }
Этот метод находит как включенные, так и выключенные объекты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2018, 13:44
Помогаю со студенческими работами здесь

Отключение / включение USB
есть usb прибор ,есть прога. Дык вот когда все подключаю в первый раз. то норм работает. когда вырубаю прогу а потом опять включаю -...

Включение/отключение сайта
Здравствуйте, прошу вашей помощи :) Есть мой сайт, нужна возможность включать/отключать его Выключение уже сделал через .htaccess,...

Включение/выключение/отключение ПК
Системный блок Корпус: ZALMAN ZM-T1 + Винты: ZM-F3 Процессор: Intel Core i5-3330 Кулер: ZALMAN CNPS5X Performa HDD: Seagate...

Отключение и включение картинок
Есть такой переключатель (см. картинку) ее описание в index.php: &lt;div class=&quot;switch1&quot;&gt; &lt;input type=&quot;checkbox&quot;&gt; ...

Включение и отключение гравитации
Есть 5-7 префабов(c Rigidbody2D) при старте они висят в воздухе,при нажатии на кнопку начинают падать вниз. Как это сделать? все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru