public IEnumerator ConfigureMonster(MonsterGenerator.MonsterSpawnInfo monsterInfo)
        {
            yield return(new WaitForEndOfFrame());

            ModifierManager           = gameObject.AddComponent <ModifierManager>();
            ModifierManager.modifiers = monsterInfo.modifierTypes;
            MonsterName   = monsterInfo.monsterName;
            NoteCountLeft = (int)monsterInfo.noteCount;
            ModifierManager.noteCountDuration = NoteCountLeft;
            maxHealth         = (int)monsterInfo.monsterHp;
            CurrentHealth     = (int)monsterInfo.monsterHp;
            MonsterDifficulty = (int)monsterInfo.monsterDifficulty;
            SpawnTime         = monsterInfo.spawnTime;
            UnSpawnTime       = monsterInfo.unspawnTime;
            name = "[FS|" + MonsterName + "lv." + MonsterDifficulty + "]";
            new UnityTask(ModifierManager.ConfigureModifiers());
            ScoreControllerManager = gameObject.AddComponent <ScoreControllerManager>();
            ScoreControllerManager.ScoreControllerInitialized += self => enabled = true;
            ScoreControllerManager.BombCut      += self => { ModifierManager.ReduceColorSuckerColorness(); };
            ScoreControllerManager.NoteCut      += self => { ModifierManager.ImproveColorSuckerColorness(); };
            ScoreControllerManager.NoteFullyCut += (self, score) => {
                Hurt(score);
                NotePassed();
            };
            ScoreControllerManager.NoteMissed += self => {
                ModifierManager.ReduceColorSuckerColorness();
                NotePassed();
            };
        }
 private void Awake()
 {
     instance = this;
 }