Elite Games - Свобода среди звезд!
.
  » Unity -- учим вместе | страница 17
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 17 из 17
На страницу: Пред.  1, 2, 3 ... 15, 16, 17    Перейти:   Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Unity -- учим вместе»
Jurec
 440 EGP


Ведущий раздела
Рейтинг канала: 4(70)
Репутация: 106
Сообщения: 1439
Откуда: Seattle
Зарегистрирован: 25.02.2006
В рантайме изменение префаба не поменяет уже Instansiated объекты. Instanciate это "сделать копию".
Чтобы поменять все созданные камеры - надо поменять все созданные камеры самому через скрипт. Это если ты в рантайме работаешь.
_________________
MOV topka, C++
    Добавлено: 21:17 27-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Их я не вручную инстнацировал, а они как префаб на сцене.

Jurec :
В рантайме изменение префаба не поменяет уже Instansiated объекты.

Понятно, спасибо.

Есть идея, что здесь это может быть объяснено порядком развертывания. Т.е. если во время загрузки сцены идут события 1) инстанцирование камеры 2) запуск Start() объекта на сцене - то тогда изменение префаба в старте на камеру не влияет; если же сначала 2, потом 1, то влияет.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (23:35 27-03-2019), всего редактировалось 1 раз
    Добавлено: 22:17 27-03-2019   
Jurec
 440 EGP


Ведущий раздела
Рейтинг канала: 4(70)
Репутация: 106
Сообщения: 1439
Откуда: Seattle
Зарегистрирован: 25.02.2006
надо проверить, но вроде как при компиляции билда все префабы разворачиваются в конкретные инстансы. и тогда все равно какой порядок
_________________
MOV topka, C++
    Добавлено: 22:41 27-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
У меня подобные ощущения когда пару недель назад собрали картинку из нескольких составляющих, где A лежит на Б. В Unity никто ничего не замечал, все ок. Ставим на телефон - А пропадает. Через некоторое время обнаруживаем, что А и Б на одном слое, но в зависимости от фазы Луны оно лежит либо так что А видно, либо так что не видно.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 10:40 28-03-2019   
seaman
 50 EGP

Репутация: 0
Сообщения: 15
Откуда: Самара
Зарегистрирован: 15.01.2017
Цитата:
Если перетащить на ссылку (_camera) префаб который оригинальный префаб в директории со всеми префабами, то глюк есть. Если перетащить инстанцированный префаб, то глюка нет.

Ну так и должно быть.
Ссылка на префаб - это ссыслка на "описание объекта", а не на сам объект. И изменение его ни к чему не приведет. По идее не должно ничего менять и в редакторе. Если меняет - вот это видимо глюк.
Сам объект у Вас на сцене. Перетаскиваете его - все работает, т.к. это и есть реальный объект.

добавлено спустя 3 минуты:
Цитата:
А и Б на одном слое

Это спрайты? Не UI?

В UI все достаточно четко. То что ниже в иерархии - отрисовывается поверх того что выше.
Если просто спрайт, то там да - бывает и так и так. Лучше разделять по слоям для четкого порядка.

Последний раз редактировалось: seaman (16:18 28-03-2019), всего редактировалось 1 раз
    Добавлено: 16:18 28-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
seaman :
По идее не должно ничего менять и в редакторе.

Берём префаб-камеру и 2 сцены, помещаем префаб-камеру на ту на ту сцену. Изменяем префаб - изменяются обе камеры на сценах.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 10:26 29-03-2019   
seaman
 50 EGP

Репутация: 0
Сообщения: 15
Откуда: Самара
Зарегистрирован: 15.01.2017
При чем тут то, что ты сейчас написал и твой код, который пытается что-то в префабе изменить?
    Добавлено: 16:31 29-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
То, что написал, относится ко всей теме.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 21:45 29-03-2019   
seaman
 50 EGP

Репутация: 0
Сообщения: 15
Откуда: Самара
Зарегистрирован: 15.01.2017
Изменение префаба в редакторе и попытка изменения префаба кодом - абсолютно разные вещи.
В первом посте ты пытался изменить его кодом. Что тебе Юнити не дала сделать и на что я тебе указал. Префаб - шаблон объекта. Создается и меняется только в редакторе. Изменить в билде его просто невозможно.
Потом ты пишешь: измени префаб в редакторе он изменится во всех сценах. Естественно изменится. Ты изменил шаблон. Объекты созданные по измененному шаблону будут естественно другими.
Но как связано одно с другим? Только тем, что это твои сообщения?
    Добавлено: 22:16 29-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
seaman :
Что тебе Юнити не дала сделать

Unity даёт это сделать, с этого всё началось.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 01:32 30-03-2019   
seaman
 50 EGP

Репутация: 0
Сообщения: 15
Откуда: Самара
Зарегистрирован: 15.01.2017
Да ну! А что ж ты тогда вообще вопрос задавал, раз все дает?
    Добавлено: 22:18 30-03-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Вопрос про вызов кликовых событий.

Есть клики от пользователя (mouse down, touch, on drag, ...). Есть элементы UI и элементы сцены. Хочется грамотно перехватывать только нужные события. Например:
- есть на сцене перекрывающиеся объекты A и Б, сделать так, что в случае перекрытия задний Б не получал события, а только передний А;
- есть на сцене передний А и фоновый В, сделать так, чтобы В всегда ловил;
- есть на сцене А, есть Г как элемент UI, и они перекрываются; сделать так, чтобы А ловил (например, окончание перетаскивания);
- есть состояние игры-приложения; в зависимости от него объекты ловят события или нет, пропускают клик на фон или нет, ...
... и т.д.

На практике зачастую слабопредсказуемый рандом. Думал что есть внятное описание как это устроено в Unity, начал искать, и пока что нашел только страдания (1 2 3 и т. п.). Народ походу пишет велосипеды для управления подобными вещами.

Этот вопрос все в том же состоянии в Unity? Есть ли хорошее описание механизмов как это устроено чтобы самому все потом разрулить? По-прежнему лучше велосипедить?

P.S. Сейчас актуально про 2D, но не помешало бы и с 3D подразобраться. Насколько понял, они идут отдельно.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (16:11 09-05-2019), всего редактировалось 1 раз
    Добавлено: 15:29 09-05-2019   
Jurec
 440 EGP


Ведущий раздела
Рейтинг канала: 4(70)
Репутация: 106
Сообщения: 1439
Откуда: Seattle
Зарегистрирован: 25.02.2006
Все 3 вопроса, линки на которые ты дал, это 2014 год, до выхода Unity UI. Конечно все не в таком состоянии как там описано.

Для 2d есть https://docs.unity3d.com/ScriptReference/EventSystems.IPointerClickHandler.html
https://docs.unity3d.com/ScriptReference/EventSystems.IEndDragHandler.html
и компания

Насчет перекрытия ивентов - https://docs.unity3d.com/ScriptReference/UI.Graphic-raycastTarget.html

Для 3d ты должен делать рейкасты сам.
_________________
MOV topka, C++
    Добавлено: 23:23 09-05-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Хорошо, спасибо. Покопаю в этом направлении. Раньше делал всякими OnMouseDown, OnEndDrag, ... Сейчас попробовал через IPointerClickHandler, и оно по умолчанию так понимаю обрабатывает как первый случай моего списка, а там дальше нужно бросать лучи в соответствующем контексте.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 09:48 10-05-2019   
Jurec
 440 EGP


Ведущий раздела
Рейтинг канала: 4(70)
Репутация: 106
Сообщения: 1439
Откуда: Seattle
Зарегистрирован: 25.02.2006
Кстати, OnMouseDown, OnEndDrag должны работать на 3d объектах. Но это все старые штуки, посмотри лучше какие-то туториалы по UI.


Minx :
а там дальше нужно бросать лучи в соответствующем контексте

Да, можешь как-то так:
ссылка
_________________
MOV topka, C++
    Добавлено: 20:48 10-05-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Есть GameObject, у которого много дочерних 2D изображений (компонентов с SpriteRenderer, TextMesh и т.п.)

Хочется:
1) запомнить текущее состояние;
2) сделать всем новый Transparent (например, уменьшить на 50%).
3) через некоторое время вернуть Transparent обратно.

Как-то не нашёл простого решения. Пробую перебрать все дочерние, найти в них все SpriteRenderer/TextMesh где есть Color, сохранить ссылки в массиве. Далее отдельной процедурой меняются цвета через перебор массива, и аналогично процедура восстановления.

С учетом того, что Color это property, на которую просто так ref не повесить, все выходит жестоко. Может есть более простые решения?

В идеале хотелось бы что-то типа Canvas Group, но он только для UI.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 22:53 15-06-2019   
seaman
 50 EGP

Репутация: 0
Сообщения: 15
Откуда: Самара
Зарегистрирован: 15.01.2017
Ну найти все нужные компоненты в дочерних в иерархии элементарно
var rends = GetComponentsInChildren<SpriteRenderer>();
    Добавлено: 22:06 16-06-2019   
Minx
 870 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 139
Сообщения: 10400
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
seaman :
var rends = GetComponentsInChildren<SpriteRenderer>();

Minx :
Пробую перебрать все дочерние

Эта фаза так и делается.

У меня в принципе получилось, но то, что делает Canvas Group одним полем-числом, это заняло 150-200 строк и привязано к SpriteRenderer/TextMesh (появится третий рендер, надо будет словить проблему и вписать дополнительно).
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (22:17 16-06-2019), всего редактировалось 2 раз(а)
    Добавлено: 22:13 16-06-2019   
Jurec
 440 EGP


Ведущий раздела
Рейтинг канала: 4(70)
Репутация: 106
Сообщения: 1439
Откуда: Seattle
Зарегистрирован: 25.02.2006
только еще юзай MaterialPropertyBlock для установления цвета, так намного быстрее чем напрямую color менять
_________________
MOV topka, C++
    Добавлено: Вчера в 5:19   
Канал Игры Мечты: «Unity -- учим вместе»
На страницу: Пред.  1, 2, 3 ... 15, 16, 17    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Че у вас тут, клуб анонимных космоголиков? Привет, пилоты, меня зовут Ocean и я играю в KSP... (Ocean)

  » Unity -- учим вместе | страница 17
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18