무지성으로 코드 짜고 있는데 맞게 하는 건지 모르겠음.
유지 보수성을 늘리라 그러는데 무슨 말인지도 모르겠고.
일단 최대한 구글링해서 해봤는데 코드 평가 좀.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class fight_manager : MonoBehaviour //싸움을 시작할때, 활성화. 싸움이 끝날때 비활성화
{
    public static bool war_doing = false;
    

    singleton singleton = singleton.get_singleton(); //데이터 관리 싱글톤
    attack_code attack = attack_code.get_attack_code_singleton(); //공격 함수 싱글톤
    skill_code effect = skill_code.get_skill_code_singleton(); // 효과 함수 싱글톤

    public static List<skill_data> situation_fight_start  = new List<skill_data>(); //상황 저장 함수
    bool situation_fight_start_bool = false; //상황 시 켜지는 변수

    int damage_plus =  0; //데미지 더하기 뺴기. 0이 기본
    int damage_multi = 1; // 데미지 곱하기 나누기. 1이 기본
    int damage_fix = 0; //고정 피해 0에서 1까지 있음. 0이 0 프로 1가 100프로
                    //데미지 게산법 -> 데미지 * (1 - damage_fix) * damage_multi + 데미지 * damage_fix

    float timer = 0; //전투 시간 

    int time_multi = 1; //전투 배속

    char_block char_block = char_block.get_char_block();

    public Queue<singleton.remind> remind_act = new Queue<singleton.remind>();
    //전투 상황 기억하는 큐(선입선출)



    // Start is called before the first frame update
    void Start()
    {
        { //에시 케릭터 생성1
            fight_personal_data team1_example = new fight_personal_data();
            team1_example.original_hp = 150;
            team1_example.level = 3;
            team1_example.original_damage = 5;
            team1_example.original_move_speed = 1;
            team1_example.skill_piece_now = 0;
            team1_example.skill_piece_full = 5;
            team1_example.x_position = 3;
            team1_example.y_position = 3;
            team1_example.this_job  = fight_personal_data.job.spearman;
            team1_example.range = fight_personal_data.range_type.range_in;
            team1_example.team_type = fight_personal_data.team.team1;
            team1_example.name = "team1_example";
            come_in_battlefield(team1_example);
        }
        { //에시 케릭터 생성2
            fight_personal_data team2_example = new fight_personal_data();
            team2_example.original_hp = 150;
            team2_example.level = 3;
            team2_example.original_damage = 5;
            team2_example.original_move_speed = 1;
            team2_example.skill_piece_now = 0;
            team2_example.skill_piece_full = 5;
            team2_example.x_position = 5;
            team2_example.y_position = 2;
            team2_example.this_job = fight_personal_data.job.spearman;
            team2_example.range = fight_personal_data.range_type.range_out;
            team2_example.team_type = fight_personal_data.team.team2;
            team2_example.name = "team2_example";
            come_in_battlefield(team2_example );
        }
        StartCoroutine(fight_rutine());
    }

    // Update is called once per frame
    void Update()
    {

        timer = Time.deltaTime * time_multi;
        //타이머 돌아가게 하는 코드. time_multi는 불러오기 위해 시간 배속에서 씀.
        
        for (int i = singleton.battlefield.Count -1; i >=0; i--)
        {
        
            if (singleton.battlefield[i].hp <= 0)
            {
                if (singleton.battlefield[i].team_type == fight_personal_data.team.team1)
                {
                    singleton.team_1.Remove(singleton.battlefield[i]);
                }
                else if (singleton.battlefield[i].team_type == fight_personal_data.team.team2)
                {
                    singleton.team_2.Remove(singleton.battlefield[i]);
                }
                singleton.battlefield.Remove(singleton.battlefield[i]); //전체 전장, battlefield에서도 삭제
           
        }

        if (remind_act.Count !=0) //오류 방지용
        {
            if (remind_act.Peek().time <= timer) //전투에 참가하는 기록으로 전투 재현.
        {
            if (remind_act.Peek().remind_Type == singleton.remind_type.Char) //나오는 게 케릭터 타입인가
            {
                fight_personal_data target = remind_act.Peek().summon_target;
                come_in_battlefield(target);
                remind_act.Dequeue();
            }
            else if (remind_act.Peek().remind_Type == singleton.remind_type.effect) //나오는 게 효과 타입(물약, 기타 등등 )인가
                {
                effect_make(remind_act.Peek().skill_summon_target,remind_act.Peek().situation);
                remind_act.Dequeue();
            }
        }
        }

    }

    
    void skill_shield(fight_personal_data target)
    {

    }




    int order = 0;

    IEnumerator fight_rutine()
    {
        
             while (singleton.team_1.Count != 0 && singleton.team_2.Count != 0)
        {
          
            try
             { 
                fight_personal_data this_char = singleton.battlefield[order];


            if (this_char.range == fight_personal_data.range_type.range_out) //원거리 케릭터가 타겟 정하기
            {
                this_char.target = get_target_out(this_char.x_position,this_char.y_position,this_char.team_type);
            }
            else if (this_char.range == fight_personal_data.range_type.range_in) //단거리 케릭터가 타겟 정하기
            {
                (int x,int y) position = get_target_in_go(this_char.x_position,this_char.y_position,this_char.team_type);
                yield return new WaitForSeconds((0.5f/time_multi)/this_char.move_speed_now); //이동시간 때문에 기다림
                Debug.Log(position.x);
                Debug.Log(position.y);
                    move(singleton.battlefield[order], position.x, position.y);
                this_char.target = get_target_in(this_char.x_position, this_char.y_position, this_char.team_type);

            }
                Debug.Log(this_char.name + ";" + this_char.target.name + ";" + this_char.x_position + ";" + this_char.y_position);

              char_block.block_appear(char_block.direct.left);
              yield return new WaitForSeconds(0.5f);
              char_block.block_disappear( );

                switch (this_char.this_job) //직업 따라 공격 다르게
            {
                case fight_personal_data.job.spearman: attack.spearman_attack(this_char, this_char.target,damage_fix,damage_multi,damage_plus);  break;
            }
              
             }


             finally
                {
                if (order == singleton.battlefield.Count - 1)
                {
                    order = 0;
                }
                else
                {
                    order++;
                }
             }
            
            }
        
      

        
    }


   

- dc official App