Баланс оружия вынесли из констант в ассеты-конфиги: что это даёт
Урон, скорострельность и разброс каждого оружия раньше были константами внутри класса Weapon. Их вынесли в отдельные ассеты-конфиги на основе ScriptableObject, и оружие при старте читает параметры из ассета. Что по сути изменилось?
- ScriptableObject — это компонент без Update: чтобы игра увидела параметры, конфиг всё равно надо повесить на объект сцены и следить за порядком загрузки
- Конфиги нужны только ради видимости чисел в инспекторе: из кода к ним всё равно приходится обращаться поиском по имени файла, поэтому кода стало больше
- Данные стали отдельными ассетами: дизайнер правит баланс без изменения кода, а один ассет используют все экземпляры оружия
- Главный выигрыш в скорости: чтение поля из ассета быстрее обращения к полю обычного класса, потому что данные лежат в нативной памяти движка
