Полезные инструменты для ускорения разработки игр.
- Управление сценами - GameSceneManager! Передача сообщений/параметров между сценами без использования игровых объектов. Запросы декарируемые, поэтому вы можете совершать дополнительные действия после загрузки сцен, к примеру подгрузка вспомогательных сцен (теперь не нужно в каждой сцене хранить лишние обработчики).
- Система управления файлами данных - Storage.
- Система запросов пути - Pathfinding -, которая помогает ограничить обязанности компонентов игры. Реализована в двух вариантах FullAbstraction и NonAlloc. Реализация поиска пути по linked-jagged-array.
- Унификация физики - Physics. Теперь сущности, которые взаимодействуют с физикой могут просто реализовать интерфейс IPhysicsEntity, который предоставляет дополнительные данные о физическом воздействиия. Сила представлена структурой Force. Также реализованы собственные триггеры, которые могут быть дополнены любым функционалом и не нуждаются в наличии на объекте коллайдеров.
- Пуллинг объектов, без необъодимости наличия GameObject'ов - Pooling.
- Реализация объектов Singleton, которые могут быть настроены с помощью аттрибутов. Синглтоны можно ожидать, используя механизм WeakEvents, который встроен в их функционал. Также эти объекты можно вручную создавать и уничтожать.
- Абстракция для визуальных элементов - Visuals. Имеется поддержка контекста объектов, реализуемая через View.
- Контекст объектов - Context. С его помощью можно сгруппировать объекты в один контекст, внутри которого они могут общаться между собой! (В основном использую при создании UI).
- EventBus, WeakEvent, Callback, Promise
- Тип Option из языка F#, используемый в большинтсве новых компонентов пакета. https://github.com/EveryGameSPlay/Package-Unity/blob/main/Objects/Structs/Option.cs
- Утилиты для генерации мешей и взаимодействия с материалами.
- Расширения для различных объектов по типу bool, float, list, linkedlist и т.д..