Что ж, я думаю, что решение этой проблемы заключается в использовании делегатов / передачи событий.
Допустим, у вас есть моб, как кто-то сказал ранее, у вас может быть объект "наблюдатель моба".Идея состоит в том, что когда GameEntity является частью моба, эта сущность подписывается на «наблюдателя моба».Если эта сущность покидает моб, она сообщит об этом «наблюдателю моба» (отписаться).
Итак, когда вам нужно узнать, кто составляет моб, вы можете просто попросить наблюдателя моба«Список мобов», если вам нужно выполнить поиск по позиции сущности, то вы можете самостоятельно просмотреть список сущностей, составляющих моб, и найти его в «позиции интереса».
Если ваши мобы гигантскиеВы можете добавить некоторую пространственную хеш-функцию для вашего наблюдателя моба, чтобы вы могли легко фильтровать и запрашивать «парней в мобе, которые находятся в gameGrid [10] [13]».
Если вы используете событиеПроходя мимо, это очень круто, потому что, если вы хотите пересылать сообщения между мобом, отправка события наблюдателю моба может быть использована для пересылки вышеупомянутого события подписанным сущностям.
Если вы используете делегатов, этоработает аналогичным образом.
Шаблон наблюдателя Шаблон делегата