void Start()
    {
        if (EnemyBulletBaseObject == null)
            EnemyBulletBaseObject = CommonUtil.SearchObjectChild("EnemyBulletFactory", this.transform);
        state = EnemyFactoryState.normal;

        if (initFlag) {
            CreateInitObjects();
        }
    }
    void Update()
    {
        // ポーズ中は敵の生成を行わない
        if (YkSys.Pose) {
            if (!YkSys.battleSkip) {
                switch (state) {
                    case EnemyFactoryState.normal:
                        CreateNormalEnemy();
                        break;
                    case EnemyFactoryState.boss:
                        CreateBossEnemy();
                        break;
                }
            }

            // 敵と弾丸が全て無くなったらボスフラグを立てる
            if (GetEnableEnemyAtouchInAllWall() && !GetEnableEnemyBullet() && nowCreateId >= maxId && state == EnemyFactoryState.normal && readyNormalEnemyObjectDic.Count > 0) {
                if (Application.loadedLevelName != BattleDebug.BUTTLE_DEBUG_SCENE_NAME) {
                    if (!BossCautionAnim.gameObject.activeSelf) {
                        BossCautionAnim.gameObject.SetActive(true);
                    }
                    else {
                        (CommonSys.GetSystem() as TopWindow).boss = true;
                        (CommonSys.GetSystem() as TopWindow).scenarioState = ScenarioPatternType.BOSS;
                        state = EnemyFactoryState.boss;
                    }
                }
                else {
                    (CommonSys.GetSystem() as BattleDebug).boss = true;
                    state = EnemyFactoryState.boss;
                }
            }
            timer += Time.deltaTime;
        }
    }
    /// <summary>
    /// ボス作成
    /// </summary>
    private void CreateBossEnemy()
    {
        // 現在のステージのボス隊列データを読み込み
        BossEnemyData.BossEnemyFormation formData = bossFormData[YkSys.nowStage];
        GameObject obj = bossObject;
        if (obj == null) {
            obj = CommonUtil.PrefabInstance(formData.prefab, WallObjects[formData.trans_id].transform);
        }
        if (obj != null) {
            float x = formData.pos;
            float y = formData.pos;
            float scale = formData.scale;
            obj.transform.localScale = new Vector3(scale, scale, 1);

            switch ((WallType)formData.trans_id) {
                case WallType.UP:
                    obj.transform.position = new Vector3(x, WallObjects[formData.trans_id].transform.position.y + 1.5f, 0);
                    break;

                case WallType.DOWN:
                    obj.transform.position = new Vector3(x, WallObjects[formData.trans_id].transform.position.y, 0);
                    obj.transform.Rotate(0, 0, 180);
                    break;

                case WallType.RIGHT:
                    obj.transform.position = new Vector3(WallObjects[formData.trans_id].transform.position.x, y, 0);
                    obj.transform.Rotate(0, 0, -90);
                    break;

                case WallType.LEFT:
                    obj.transform.position = new Vector3(WallObjects[formData.trans_id].transform.position.x, y, 0);
                    obj.transform.Rotate(0, 0, 90);
                    break;
            }

            // ここまできたら生成フラグをなくす
            state = EnemyFactoryState.none;

            // ボスを生成
            obj.GetComponent<BossEnemy>().SetData(formData, EnemyBulletBaseObject, WallObjects, this);
            obj.SetActive(true);
            BossCautionAnim.gameObject.SetActive(false);
        }
    }