Unity 3d - ВОПРОСЫ И ОТВЕТЫ - Страница 24 - Форум Игроделов
Пт, 03 Май 2024, 16:33 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 24 из 24
  • «
  • 1
  • 2
  • 22
  • 23
  • 24
Форум Игроделов » UNITY3D » HELP & FAQ » Unity 3d - ВОПРОСЫ И ОТВЕТЫ
Unity 3d - ВОПРОСЫ И ОТВЕТЫ
Geb-ZДата: Пн, 11 Июл 2016, 17:21 | Сообщение # 461
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Не столько вопрос, сколько нужно мнение опытных "юнитологов". Как лучше реализовать кликабельные ячейки (квадратные, гексагональные, не суть важно) карты? Генерировать из обычных GameObject, повесив на каждую ячейку скрипт действия и 2d-коллайдер (просто, но не слишком-ли затратно, если ячеек далеко за сотню?)? Отрисовать через Canvas? Или более разумные варианты существуют?
Важно, что игра в 2d, в изометрии.
 
СообщениеНе столько вопрос, сколько нужно мнение опытных "юнитологов". Как лучше реализовать кликабельные ячейки (квадратные, гексагональные, не суть важно) карты? Генерировать из обычных GameObject, повесив на каждую ячейку скрипт действия и 2d-коллайдер (просто, но не слишком-ли затратно, если ячеек далеко за сотню?)? Отрисовать через Canvas? Или более разумные варианты существуют?
Важно, что игра в 2d, в изометрии.

Автор - Geb-Z
Дата добавления - 11 Июл 2016 в 17:21
ЛевшаДата: Пн, 11 Июл 2016, 21:04 | Сообщение # 462
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Каждый по своему делает.
Я например сделал бы префаб одной ячейки с коллайдером.
И из кода разбросал бы ячейки по полю при старте игры по нужным координатам.
Можно поле и изначально на сцене в собранном виде иметь.
Кому - как удобнее, готовых рецептов не существует...


X.cor.R (Prologue)
 
СообщениеКаждый по своему делает.
Я например сделал бы префаб одной ячейки с коллайдером.
И из кода разбросал бы ячейки по полю при старте игры по нужным координатам.
Можно поле и изначально на сцене в собранном виде иметь.
Кому - как удобнее, готовых рецептов не существует...

Автор - Левша
Дата добавления - 11 Июл 2016 в 21:04
Geb-ZДата: Пн, 11 Июл 2016, 22:18 | Сообщение # 463
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Цитата Левша ()
Я например сделал бы префаб одной ячейки с коллайдером.
И из кода разбросал бы ячейки по полю при старте игры по нужным координатам.

Так изначально и поступил, но потом подумал, что 400+ ячеек, на каждой из которых висит код, могут в будущем серьёзно подорвать быстродействие игры.
Как вариант, добавлять скрипт и коллайдер только в момент обращения к префабу-ячейке, но снова лишние вычисления и рэйкасты - хрен редьки не слаще.
 
Сообщение
Цитата Левша ()
Я например сделал бы префаб одной ячейки с коллайдером.
И из кода разбросал бы ячейки по полю при старте игры по нужным координатам.

Так изначально и поступил, но потом подумал, что 400+ ячеек, на каждой из которых висит код, могут в будущем серьёзно подорвать быстродействие игры.
Как вариант, добавлять скрипт и коллайдер только в момент обращения к префабу-ячейке, но снова лишние вычисления и рэйкасты - хрен редьки не слаще.

Автор - Geb-Z
Дата добавления - 11 Июл 2016 в 22:18
AswoДата: Вт, 12 Июл 2016, 11:20 | Сообщение # 464
КЗОИ
 
Сообщений: 1031
Награды: 18
Репутация: 430
Статус: Offline
Geb-Z, на самом деле, все проще можно сделать. Отлавливаем клик по плоскости и используя полученные координаты рассчитываем ячейку, в которую мы попали.

К примеру, у нас есть поле 1024x1024 и ячейка 64x64. При клике по полю, мы получили координаты x = 543, y = 342. Делим без остатка эти две переменные и получаем a1 = 543/64 = 8, a2 = 342 / 64 = 5. Ну и мы имеем, что игрок выбрал ячейку в 8 столбце, 5 строке.


end.
 
СообщениеGeb-Z, на самом деле, все проще можно сделать. Отлавливаем клик по плоскости и используя полученные координаты рассчитываем ячейку, в которую мы попали.

К примеру, у нас есть поле 1024x1024 и ячейка 64x64. При клике по полю, мы получили координаты x = 543, y = 342. Делим без остатка эти две переменные и получаем a1 = 543/64 = 8, a2 = 342 / 64 = 5. Ну и мы имеем, что игрок выбрал ячейку в 8 столбце, 5 строке.

Автор - Aswo
Дата добавления - 12 Июл 2016 в 11:20
ЛевшаДата: Вт, 12 Июл 2016, 14:33 | Сообщение # 465
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата Geb-Z ()
400+ ячеек, на каждой из которых висит код, могут в будущем серьёзно подорвать быстродействие игры.

С какого перепугу ?
Не в апдейте же клик в ячейках отлавливать.
Пишется метод который срабатывает на клик, а в остальное время он нейтрален.
Да и не обязательно скрипты вешать на ячейки, можно их обрабатывать отдельным - единичным скриптом.


X.cor.R (Prologue)
 
Сообщение
Цитата Geb-Z ()
400+ ячеек, на каждой из которых висит код, могут в будущем серьёзно подорвать быстродействие игры.

С какого перепугу ?
Не в апдейте же клик в ячейках отлавливать.
Пишется метод который срабатывает на клик, а в остальное время он нейтрален.
Да и не обязательно скрипты вешать на ячейки, можно их обрабатывать отдельным - единичным скриптом.

Автор - Левша
Дата добавления - 12 Июл 2016 в 14:33
Geb-ZДата: Вт, 12 Июл 2016, 15:19 | Сообщение # 466
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Цитата Aswo ()
Отлавливаем клик по плоскости и используя полученные координаты рассчитываем ячейку, в которую мы попали.

В таком случае графическое отображение ячеек вообще не играет роли. Идея хорошая, но пока не в моём варианте.

Цитата Левша ()
Да и не обязательно скрипты вешать на ячейки, можно их обрабатывать отдельным - единичным скриптом.

Cобирал ячейки в массив и присваивал им класс помощью AddComponent<>(), в котором уже отслеживал клик по ячейке через OnMouseDown, но не был уверен в правильности своего решения.

Продолжая идею собирания ячеек, набросал следующий код:


В программировании я почти ноль, код сомалийский (индусы пишут лучше), но работает без потерь FPS.


Сообщение отредактировал Geb-Z - Ср, 13 Июл 2016, 12:25
 
Сообщение
Цитата Aswo ()
Отлавливаем клик по плоскости и используя полученные координаты рассчитываем ячейку, в которую мы попали.

В таком случае графическое отображение ячеек вообще не играет роли. Идея хорошая, но пока не в моём варианте.

Цитата Левша ()
Да и не обязательно скрипты вешать на ячейки, можно их обрабатывать отдельным - единичным скриптом.

Cобирал ячейки в массив и присваивал им класс помощью AddComponent<>(), в котором уже отслеживал клик по ячейке через OnMouseDown, но не был уверен в правильности своего решения.

Продолжая идею собирания ячеек, набросал следующий код:


В программировании я почти ноль, код сомалийский (индусы пишут лучше), но работает без потерь FPS.

Автор - Geb-Z
Дата добавления - 12 Июл 2016 в 15:19
СталексДата: Ср, 20 Июл 2016, 16:13 | Сообщение # 467
 
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Вот создал я элемент dropdawn. В инспекторе заполнил строки. Все красиво - нажимается, выбирается. Но как дальше-то? Как мне в скрипте к нему обратиться и узнать, что же там выбрали? Что-то типа такого:
...
if (выбрано первое значение в выпадающем списке) {n=....};
if (выбрано второе значение в выпадающем списке) {n=....}
...
Что написать вместо "выбрано первое значение в выпадающем списке"?
 
СообщениеВот создал я элемент dropdawn. В инспекторе заполнил строки. Все красиво - нажимается, выбирается. Но как дальше-то? Как мне в скрипте к нему обратиться и узнать, что же там выбрали? Что-то типа такого:
...
if (выбрано первое значение в выпадающем списке) {n=....};
if (выбрано второе значение в выпадающем списке) {n=....}
...
Что написать вместо "выбрано первое значение в выпадающем списке"?

Автор - Сталекс
Дата добавления - 20 Июл 2016 в 16:13
ЛевшаДата: Ср, 20 Июл 2016, 19:46 | Сообщение # 468
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Для начала надо иметь ссылку на этот компонент.
Ну а по ссылке - переходишь и обращаешся.

Код
public dropdawn drpdwn;
if (drpdwn.var.value) { }


X.cor.R (Prologue)
 
СообщениеДля начала надо иметь ссылку на этот компонент.
Ну а по ссылке - переходишь и обращаешся.

Код
public dropdawn drpdwn;
if (drpdwn.var.value) { }

Автор - Левша
Дата добавления - 20 Июл 2016 в 19:46
СталексДата: Чт, 21 Июл 2016, 08:38 | Сообщение # 469
 
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Спасибо, сделал. У меня даже сработал упрощенный вариант:
Код
public dropdawn drpdwn;
if (drpdwn.value) { }
 
СообщениеСпасибо, сделал. У меня даже сработал упрощенный вариант:
Код
public dropdawn drpdwn;
if (drpdwn.value) { }

Автор - Сталекс
Дата добавления - 21 Июл 2016 в 08:38
Geb-ZДата: Сб, 30 Июл 2016, 11:42 | Сообщение # 470
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Как сделать Canvas непрозрачным для курсора (например, если под Canvas находится объект с OnMouseEnter, то объект всё равно не реагирует на мышку)? Что-то слышал про Event System и использование Switch, но в этом направление сильно не копал.
 
СообщениеКак сделать Canvas непрозрачным для курсора (например, если под Canvas находится объект с OnMouseEnter, то объект всё равно не реагирует на мышку)? Что-то слышал про Event System и использование Switch, но в этом направление сильно не копал.

Автор - Geb-Z
Дата добавления - 30 Июл 2016 в 11:42
ЛевшаДата: Сб, 30 Июл 2016, 22:42 | Сообщение # 471
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата Geb-Z ()
Как сделать Canvas непрозрачным для курсора

Одень на него коллайдер, что проще ? smile


X.cor.R (Prologue)
 
Сообщение
Цитата Geb-Z ()
Как сделать Canvas непрозрачным для курсора

Одень на него коллайдер, что проще ? smile

Автор - Левша
Дата добавления - 30 Июл 2016 в 22:42
Geb-ZДата: Вс, 31 Июл 2016, 09:48 | Сообщение # 472
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Цитата Левша ()
Одень на него коллайдер, что проще ?

Как так? UI вроде-бы не является физическим объектом с точки зрения движка и коллайдер ему невозможно назначить?
 
Сообщение
Цитата Левша ()
Одень на него коллайдер, что проще ?

Как так? UI вроде-бы не является физическим объектом с точки зрения движка и коллайдер ему невозможно назначить?

Автор - Geb-Z
Дата добавления - 31 Июл 2016 в 09:48
ЛевшаДата: Вс, 31 Июл 2016, 12:45 | Сообщение # 473
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
А ты попробуй. smile



X.cor.R (Prologue)
 
СообщениеА ты попробуй. smile


Автор - Левша
Дата добавления - 31 Июл 2016 в 12:45
Geb-ZДата: Вс, 31 Июл 2016, 14:57 | Сообщение # 474
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Таки можно, да. Только это почему-то не помогло. Видимо, придётся углубляться в Event System или всё-же воспользоваться Raycast.
 
СообщениеТаки можно, да. Только это почему-то не помогло. Видимо, придётся углубляться в Event System или всё-же воспользоваться Raycast.

Автор - Geb-Z
Дата добавления - 31 Июл 2016 в 14:57
ЛевшаДата: Пн, 01 Авг 2016, 14:07 | Сообщение # 475
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
С евент систем - там все мутно.
Проще курсор в ректе гуя отлавливать и запрещать\разрешать взаимодействие.
А коллайдер на гуе - да, не помогает. Он находится физически в сцене а в камеру только проецируется (чето я не подумал)...


X.cor.R (Prologue)
 
СообщениеС евент систем - там все мутно.
Проще курсор в ректе гуя отлавливать и запрещать\разрешать взаимодействие.
А коллайдер на гуе - да, не помогает. Он находится физически в сцене а в камеру только проецируется (чето я не подумал)...

Автор - Левша
Дата добавления - 01 Авг 2016 в 14:07
Geb-ZДата: Вт, 02 Авг 2016, 22:08 | Сообщение # 476
 
Сообщений: 7
Награды: 0
Репутация: 0
Статус: Offline
Цитата Левша ()
С евент систем - там все мутно.

Изучить всё-же не помешало-бы.

Цитата Левша ()
Проще курсор в ректе гуя отлавливать и запрещать\разрешать взаимодействие.

Проблема отпала сама собой после небольшой модификации меню.
 
Сообщение
Цитата Левша ()
С евент систем - там все мутно.

Изучить всё-же не помешало-бы.

Цитата Левша ()
Проще курсор в ректе гуя отлавливать и запрещать\разрешать взаимодействие.

Проблема отпала сама собой после небольшой модификации меню.

Автор - Geb-Z
Дата добавления - 02 Авг 2016 в 22:08
Форум Игроделов » UNITY3D » HELP & FAQ » Unity 3d - ВОПРОСЫ И ОТВЕТЫ
  • Страница 24 из 24
  • «
  • 1
  • 2
  • 22
  • 23
  • 24
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024