Недавно я столкнулся с некоторыми проблемами при простой передаче ссылок на объекты / врагов в игре, которую я делаю, и мне интересно, если я использую неправильный подход.
Основная проблема, с которой я столкнулся, - избавление от врагов и предметов, когда другие враги или игроки могут иметь ссылки на них.
Например, если у вас есть Кролик и Волк, Волк, возможно, выбрал Кролика в качестве своей цели. Что я делаю, так это то, что у волка есть GameObject Target = null;
, и когда он решает, что голоден, Цель становится Кроликом.
Если Кролик умирает, например, если его убил другой волк, он не может быть удален из игры должным образом, потому что этот волк все еще имеет ссылку на него.
Кроме того, если вы используете развязанный подход, кролик может ударить молнией, уменьшив его здоровье до уровня ниже нуля. Когда он в следующий раз обновляет себя, он понимает, что он умер и удаляется из игры ... но нет способа обновить все, что в нем заинтересовано.
Если бы вы дали каждому врагу уникальный идентификатор, вы могли бы вместо этого просто использовать ссылки на него и использовать центральный класс поиска, который его обрабатывал. Если монстр умер, класс поиска может удалить его из своего собственного индекса, и впоследствии все, кто попытается получить к нему доступ, будут проинформированы о том, что он мертв, и тогда они смогут действовать соответственно.
Есть мысли по этому поводу?