부트캠프/본캠프

[내일배움캠프_2025AUG27] 3D 방치형 RPG Idle Adventure 2일차

Young_A 2025. 8. 27. 21:56

목차

    3D 방치형 RPG Idle Adventure 2일차

    어제 한 분 탈주하시고, 유일한 나의 개발 팀원분은.. 예비군을 가셨다.

    그래서 혼자지만! 집중해보려고 한다!


    스크립트 실행 순서 수동 설정

    GameManager와 UIManager를 둘 다 싱글톤으로 구현하고 있고, UIManager에서 GameManager 내부의 필드를 호출하려고 하니 자꾸 Null 예외가 떠서 곤란했다.

    GameManager에서 Awake에 먼저 선언을 해주고 그 후에 UIManager Start에서 참조하면 될 거라고 생각했는데 그렇게 되지 않았다.

     

    유니티에는 스크립트 실행 순서를 수동으로 설정하는 방법이 있다.

    Edit -> Project Settings -> Script Execution Order를 통해 다음과 같은 창을 열 수 있다.

     

    오른쪽 하단의 + 버튼을 눌러 순서를 수동으로 설정하고 싶은 스크립트를 찾아 추가한다.

    Default Time을 기준으로 상단의 항목들은 음수, 하단의 항목들은 양수가 된다.

    숫자가 작을 수록 먼저 실행된다.

     

    다만, 나 같은 경우에는 Inspector에서 Player.cs를 직접 연결을 시켜줬는데, 이럴 경우 Player.cs는 UIManager.cs보다 늦게 호출되기 때문에 문제가 해결되지 않았다.

    private void Awake()
    {
        if (instance == null)
        {
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(this.gameObject);
        }
        player = FindObjectOfType<Player>();
    }

    GameManager.cs에서 Awake()에서 FindObjectOfType으로 Player를 찾아주었다.

    하지만 Find 쓰지 말라는 얘기를 정말 많이 들어서... Awake와 같이 일회성 호출인 경우 괜찮다고는 하지만... 음 찝찝..


    챌린지반 특강: 프로젝트 구조 샘플 

    Constants.cs 파일 내부에서 class들로 종류를 구분해 상수를 관리.

    public static class Path
    {
    	public const string Prefab = "Prefab/";
    }

    UIManager, ResourceManager, SceneLoadManager 등을 만들어서 사용하는 예제들을 보여주셨다.

     


    제네릭 싱글톤, 제네릭 오브젝트 풀

    다음 팀 프로젝트를 위해 잠깐 머리 식히는 동안 제네릭 싱글톤과 제네릭 오브젝트 풀에 대해서 알아보았다.

     

    검색하다가 발견한 내배캠 선배님의 글.

    추후에 활용할때 다시 참고해보려고 간단히 메모할겸 적어둔다.


    느낀점

    밥 타임에 '맛있게 드세요.' 할 사람이 없어서 조금 외로웠다...

    매니저님과 튜터님이 오셔서 다른 팀보다 더 신경써주시겠다고 하고 오셨다.

    원래는 다음주부터 담당 튜터님이 배정될텐데 이번주부터 담당 튜터님 배정되서 순회를 돌아주실거라고 하셨다.


    내일 학습 할 것은 무엇인지

    당연하게도?

    오늘 하기로 계획했던 것을 완료하지 못했다.

    조금 무리하게 계획하기도 했고... 

     

    오늘 하지 못한 UI Slot과 캐릭터 아이템 구매/장착을 위한 상점+인벤토리 시스템을 구현해야한다.

    된다면 캐릭터 모델을 변경하고 애니메이션을 추가하면 좋을 것 같다.

    코인 획득 또한 씬에 프리팹을 생성해서 드랍하고 그걸 수확하는 느낌으로 만들고 싶은데, 조금 복잡해보이기도 하고... 아마 못하겠지?