Я пишу игру Unity3D, которая получает сетевые события из внешнего источника. Фактические операции чтения по сети находятся в их собственном потоке.
Когда я читаю какой-либо элемент из сети, я хочу, чтобы монобихевиорр вызывал некоторую функцию, используя этот элемент в качестве аргумента при следующем вызове Update()
. Вот как я могу это сделать прямо сейчас (просто псевдокод для простоты)
Сетевая нить
OtherScript script;
while true {
Thing thing = Network.read()
script.queue.put(thing);
}
Monobehaviour (OtherScript)
SynchronizedQueue<Thing> queue;
void Update() {
while !queue.isEmpty() {
useThing(queue.pop())
}
}
Это определенно работает, но моя проблема в том, что я подписываюсь на 20+ разных типов вещей, у каждого из которых есть своя очередь и своя функция «обратного вызова», что приводит к большому количеству шаблонов.
Есть ли какой-то встроенный механизм, который автоматизирует эту функцию?