alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Проблема с триггерами
Делаю поиск объекта в массиве по запущенному триггеру, который запускается с помощью TriggerExecute.
В поиске сравниваю с GetTriggeringTrigger. И получается так, что поиск не происходит, из-за того что триггеры не совпадают. Примерный код ((код
struct Executer static Executer array all static integer count = 0 trigger action = null <...> static method GetTriggeringExec takes nothing returns Executer local integer i = .count - 1 local trigger trg = GetTriggeringTrigger() loop exitwhen i < 0 if .all[i].action == trg then set trg = null return .all[i] endif set i = i - 1 endloop set trg = null return 0 endmethod method Run takes nothing returns nothing call TriggerExecute(.action) endmethod endstruct )) В итоге он не находит вызванный объект. При проверке дебагом переменные trg и action небыли рывны null. В общем не знаю в чем проблема. Подскажите |
26.01.2012, 12:33 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
зачем делать перебор, если можно все решить подгрузкой значений из хэш-таблицы по ключу хэндла триггера который запущен?
К примеру
Даже в случае если целочисленная не записана крита не выйдет. |
26.01.2012, 13:25 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
|
26.01.2012, 13:57 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
spellwerk
offline
Опыт:
4,869Активность: |
покажи код, где используется GetTriggeringExec |
26.01.2012, 15:14 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
((код
function MyAction takes nothing returns nothing local Executer exec = Executer.GetTriggeringExec() call BJDebug("exec = "+I2S(exec)) endfunction )) |
26.01.2012, 15:44 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
Попробуй реализовать без структур, возможно у тебя GetTriggeringTrigger() при компиляции уезжает в другую функцию, либо просто не работает при вызове через TriggerExecute, хотя это вряд ли. |
26.01.2012, 15:58 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
Master_chan, с регионами нормально пашет. Хотя возможно. В принципе я уже решил эту проблему, немного исправив алгоритм. |
26.01.2012, 16:03 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
alexprey, сча немного скопетаню, но структура == триггер, при создании структуры создается новый триггер, ну соответственно по этому:
alexprey:
Бтв, вообще рекомендую юзать только статичные структуры.
И добавь проверку перед экзекутом на !=null, для надежности=) |
26.01.2012, 16:23 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alpha
offline
Опыт:
7,387Активность: |
|
26.01.2012, 16:48 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
без перебора и без хеша
|
26.01.2012, 17:46 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
|
29.01.2012, 20:55 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|