2025유니티수업

0619 C#(try, catch), 유니티(적 patrol)

버스창문 2025. 6. 19. 17:49

try문 : 이 안에 예외가 발생할만한 부분을 넣음

 *throw : 예외가 있으면 예외를 던져서 catch문에 넣음

catch : try문 안에서 발생한 예외를 처리

finally : 위의 코드가 다 끝나고 반드시 여기로 들어감

 

 

직렬화 : 게임중 실시간으로 발생한 데이터를 하드디스크에 따로 파일(txt 등)으로 저장하는것

역직렬화 : 저장된 데이터를 게임으로 불러오는 것

 

이럴 때 서버와 통신이 안된다거나 하면 try문을 이용함

 

private string GetAnswer(eCalculator cal)
{
    try
    {
        this.num1 = double.Parse(this.num1_txtBox.Text);
        this.num2 = double.Parse(this.num2_txtBox.Text);
    }
    catch 
    {
        return "숫자로 입력해주세요.";
    }
    
    switch (cal)
    {
        case eCalculator.Plus:
            {
                this.answer = num1 + num2;
                return answer.ToString();
            }

        case eCalculator.Minus:
            {
                this.answer = num1 - num2;
                return answer.ToString();
            }
        case eCalculator.Multi:
            {
                this.answer = num1 * num2;
                return answer.ToString();
            }
        case eCalculator.Divide:
            {
                try
                {
                    this.answer = num1 / num2;
                    
                }
                catch (DivideByZeroException e)
                {
                    return "∞";
                }
                return answer.ToString();
            }
    }
    return "";
}

 

 

 

____________________________________________________________________

 

 

땅 Bake

 

치울수있는 장애물인데 bake해두면 의미없이 돌아서감

 

 

navMeshObstacle

장애물

위치가 변해도 이걸 장애물로 인식함

크기보다 좀더 크게 사이즈 설정해야 부딪히지않음

 

 

    void MoveWayPoint()
    {
        if (this.agent.isPathStale) //최단 경로 계산이 끝나지 않으면 다음 수행 하지 않는다.
            //stale 신선하지 않은 -> 지금 길이 너무 오래됐다(유효하지 않다)
        {
            return;
        }

        agent.destination = wayPointList[nextIdx++].position; //길 찾고 1 더함
        this.agent.isStopped = false; // 추적 활성화
        if(nextIdx == this.wayPointList.Count) 개수 끝까지 갔으면
        {
            this.nextIdx = 0; //0으로 초기화
        }
    }

 

이걸 스타트에서 실행시키고, agent.remainingDistance가 어느정도 이하일때 실행시키면 잡아놓은 좌표대로 순찰함

 

 

    private WaitForSeconds ws;

    void Start()
    {
        this.playerTr = GameObject.FindWithTag("Player").transform;
        this.ws = new WaitForSeconds(0.3f);
    }
    
    
    코루틴을 미리 선언해놓기 가능

 

 

 

_______________________________________________

스크립트 컴파일과 어셈블리 정의 파일

 

큰 프로젝트에서 코드가 몇백개라면

변수 하나만 수정해도 모든걸 건드리면서 하루 종일 걸림

 

저 Assembly Definition을 각 폴더마다 만들면

저 폴더 내에 있는것만 컴파일되도록 제한됨

 

이렇게 바뀜

매니저가 다른폴더에 있어서 못잡음

Assembly Definition Referneces에 

CommonAd추가후 Apply

오류가 사라짐