![]()
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. В общем не знаю в чем проблема. Подскажите |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
alpha
![]() offline
Опыт:
7,387Активность: |
зачем делать перебор, если можно все решить подгрузкой значений из хэш-таблицы по ключу хэндла триггера который запущен?
К примеру
Даже в случае если целочисленная не записана крита не выйдет. |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
alexprey
познающий Unity
![]() ![]() offline
Опыт:
68,501Активность: |
|
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
spellwerk
![]() offline
Опыт:
4,869Активность: |
покажи код, где используется GetTriggeringExec |
![]() |
#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 )) |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Master_chan
Полуночный командир
![]() offline
Опыт:
15,660Активность: |
Попробуй реализовать без структур, возможно у тебя GetTriggeringTrigger() при компиляции уезжает в другую функцию, либо просто не работает при вызове через TriggerExecute, хотя это вряд ли. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
alexprey
познающий Unity
![]() ![]() offline
Опыт:
68,501Активность: |
Master_chan, с регионами нормально пашет. Хотя возможно. В принципе я уже решил эту проблему, немного исправив алгоритм. |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Faion
Noblesse Oblige
![]() ![]() offline
Опыт:
30,395Активность: |
alexprey, сча немного скопетаню, но структура == триггер, при создании структуры создается новый триггер, ну соответственно по этому:
alexprey:
Бтв, вообще рекомендую юзать только статичные структуры.
И добавь проверку перед экзекутом на !=null, для надежности=) |
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
alpha
![]() offline
Опыт:
7,387Активность: |
|
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
J64_
![]() offline
Опыт:
4,724Активность: |
без перебора и без хеша
|
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
alexprey
познающий Unity
![]() ![]() offline
Опыт:
68,501Активность: |
|
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|