Вопрос паузы - это вопрос арихитектуры проекта.
Самый простой - завести статичную переменную "GameController.IsPause" или типа того. Но тут могут повсплывать куча багов, если из кучи разных мест будешь дёргать. Более умным подходом будет
Singleton, в который стоит отправлять ещё и объект, который вызвал паузу для менеджмента коллизий, когда несколько объектов паузу вызывают, а один из них снимает. Т.е. чтобы не было ситуации, когда 2 объекта считают, что нужна пауза, но какой-то 3й эту паузу сбрасывал. Через Singleton-класс можно иметь доступ к всем объектам, которые хотят поставить паузу и определять их важность/приоритет. Но вообще синглтоны тоже не являются хорошей практикой сейчас, но для старта - самое оно.
А вопрос хранения параметров мобов и настроек -это
StaticData - данные, которые заполняются 1 раз и больше не трогаются в самом геймплее. Для этого используют
ScriptableObject'ы. Т.е. заводятся такие обжи с данными, которые ты заполняешь как монобехи в префабах, а потом отправляешь их в MonoBehaviour'ы, откуда читаешь данные и задаёшь требуемые параметры.