Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Юнит выбран - проверка
каким образом можно проверить, что юнит уже выбран в данный мнмент?
пример: стоят 2 юнита, я хочу выбрать одного из них. Когда я щелкаю на первом юните, то мне нужно нажать на него еще раз, чтобы к примеру на экран вывелось сообщение "выбран" (не суть). А если я щелкаю на 2ом юните, то нужно и его 2 раза щелкнуть для вывода текста на экран. вообщем суть как в Винде, нада 2 раза щелкнуть по любому обьекту, чтобы его открыть З.Ы. самое главное чтобы это было МУИ, тоесть для каждого игрока индивидуально З.Ы.Ы. пробовал разными способами, но что то не особо получается |
25.02.2012, 16:28 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
проверь, да
alpha добавил:
Перед применением, наверное, лучше сделать это действие: ((код jass
call SyncSelections() )) |
25.02.2012, 16:38 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
это то понятно, но в чем тогда разница между:
Код:
|
25.02.2012, 16:50 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
alpha, вроде как GroupEnumUnitsSelected это функция которая в ForGroup'е прогоняет каждого юнита на IsUnitSelected
Sidhe, ну можно попробовать сделать так: На каждого юнита нужно иметь его предыдущее состояние (выбран или нет) поэтому надо юзать либо кастом валуй либо Хеш таблицу. В принципе тут дело вкуса. При выборе юнита проверяешь его предыдущее состояние. Если был выбран, то значит это второй клик, если нет, значит первый. Дальше сохраняем наше состояние. Ну это как первый вариант. alexprey добавил: Еще как вариант: Тут потребуется уже побольше переменных. На этот раз в хеш-таблицу будем писать кол-во кликов. Юнит выбран -> увеличиваем наш ссчетчик. И делаем нужную проверку. Следующий этап это таймер. Выставляем ему время около 0.8 - 1.0 сек. В этом таймере сбрасываем наш счетчик на 0. |
25.02.2012, 17:01 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
alexprey, кастом валуй не катит, т.к. МУИ отпадает сразу
мне бы пример хотябы бональный (в вкиде кода). я проверял через int начислением i++, но не выходит корректно alexprey, таймером не пойдет, потмучто второй клик по юниту можно делать в любое время |
25.02.2012, 17:03 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Sidhe:
эмммм почему??? ну тогда в хеш, хотя не люблю его, но придется раз CV ни как Sidhe: Ну ты просил как в винде я и предложил второй вариант. Тогда 1 вариант. Выбрал, проверил прудыдущее состояние |
25.02.2012, 17:21 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, если я правильно понял то тебе надо событие
Event_player_unit_selected - вроде так
там игрок задаётся работаем с этим событием отлавливает выбор юнита
переменная и пара проверок и всё Klop добавил:
а вот тебе алгоритм
|
25.02.2012, 17:29 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Klop, ту нативку которую я сюда вставил, она тоже отслеживает игрока
суть то как раз таки в проверках, пока плохо выходит. как вариант использоваться int но пока не представляю как зделать так, чтобы корректно определяло уже выбранного юнита...на словах то все просто =) Sidhe добавил: Klop, спасибо, впринципе заработаело |
25.02.2012, 17:51 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, всё что тебе осталось просто достроен проверки на выбраного и сделай массивы для муи или используй хеш)
я так делал выбор героев двойным кликом |
25.02.2012, 17:55 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Klop, через структуры мне проще, хеш я не юзаю)
да впринципе то что ты дал условия, их достаточно |
25.02.2012, 18:00 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, Для Муи нет,пригодится ещё один бул что бы повторно не брать)
и отключить вообще триггер или удалить например
у тебя один игрок выбрал а другой нет,триггер отключать и удалять нельзя) отметил ему бул что у него уже есть когда у всех отметиш тогда удалить или я что то уже лишнее несу) |
25.02.2012, 18:40 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Klop, в твоем коде небольшой недостаток - если ткнешь на ю1, потом ю2 и снова на ю1, условие сработает, хотя не должно
|
25.02.2012, 19:13 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, нет,как если триггеринг юнит будет Ю1 потом Ю2 unit будет Ю2 и если на Ю1 то юнит должен стать Ю1 а не сработать |
25.02.2012, 19:27 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
Klop, если черехз Хеш, то именно так и работает, как я описал
Код:
|
25.02.2012, 19:39 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Klop
Папа римский
offline
Опыт:
13,006Активность: |
Sidhe, вообщем разберайся сам я намёк дал я так делал давно всё работало |
25.02.2012, 19:43 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Sidhe
Unity3D engine
offline
Опыт:
7,721Активность: |
можно закрыть, всем спасибо
|
27.02.2012, 01:57 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
закрыто |
27.02.2012, 05:01 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|