TIL

25.04.25 TIL

gaon99 2025. 4. 25. 21:03

1. 오늘 학습 키워드

리팩토링, 로딩씬 변경, 로딩 씬에 들어갈 애니메이션


2. 오늘 학습 한 내용을 나만의 언어로 정리하기

 

이런 코드에서

var loadData = new LoadingSceneData
        {
            mappings = labelMapping,
            tipChangeInterval = 2f,
            nextSceneName = "MapScene",
            payload = new object[] {}
        };

        foreach (var mappings in labelMapping)
        {
            if (mappings.label is "BGM" or "SFX")
            {
                mappings.label += $", {loadData.nextSceneName}";
            }
        }

 

하위에 코드로 변경했고,

 private void GameStart()
    {
        InitializeCharacterBasedOnFaction();
        
        var labelMapping = new AssetLabelMapping[]
        {
            new AssetLabelMapping
            {
                label = "NodeType",
                assetType = AssetType._NodeTypeDataSO
            },
            new AssetLabelMapping
            {
                label = "Character",
                assetType = AssetType.CharacterSO
            },
            new AssetLabelMapping
            {
                label = "BGM",
                assetType = AssetType.AudioClip
            },
            new AssetLabelMapping
            {
                label = "SFX",
                assetType = AssetType.AudioClip
            }
        };
        
        var loadData = SceneBase.CreateLoadingSceneData(labelMapping, "MapScene", new object[] {});

        LoadScene("LoadingScene", loadData);
    }

 

게임 시작시에 진영에 따라 캐릭터 데이터를 생성하는 메서드도 생성해서 제작해주었다.

 private async void InitializeCharacterBasedOnFaction()
    {
        if (string.IsNullOrEmpty(selectedFaction))
        {
            Debug.LogError("진영이 선택되지 않았습니다.");
            return;
        }
        
        var allChars = new List<CharacterSO>();
        var charHandle = Addressables.LoadAssetsAsync<CharacterSO>(
            "Character",
            so => allChars.Add(so)
        );
        await charHandle.Task;
        if (charHandle.Status != AsyncOperationStatus.Succeeded || allChars.Count == 0)
        {
            Debug.LogError("CharacterSO 로드 실패 또는 에셋이 없습니다.");
            return;
        }

        // 진영에 따라 다른 캐릭터 ID 설정
        int characterId = selectedFaction == "Hexa" ? 1 : 2; // 헥사는 마리아(1), 플래그는 엘리오스(2)라고 가정
        
        var selectedSO = allChars.FirstOrDefault(c => c.Index == characterId);
        if (selectedSO == null)
        {
            Debug.LogError($"Index가 {characterId}인 CharacterSO가 없습니다.");
            return;
        }

        // 선택된 캐릭터 데이터 초기화
        await Manager.Instance.DataManager.InitializeCharacter(selectedSO);
        Debug.Log($"{selectedFaction} 진영의 캐릭터({selectedSO.name})가 초기화되었습니다.");
    }
}

 

그리고 모의면접을 진행하며, 피드백을 들었는데,

우선 두괄식으로 말을 하는 것과 머릿속에 들어있는 이미지나, 형태들이 말로 나오는 과정이 좀 버벅 거리는게 있어서

이 부분을 글을 많이 작성해보는 것을 추천해주셨다.

 

그리고 객체 지향에 4가지 특징도 상기를 자주 안시켜주니 까먹어서,

나만의 스토리나 예를 제작해서 장기기억에 넣어야 할 것같다.


 

3. 학습하며 겪었던 문제점 & 에러

 

모의 면접을 진행하며 아직 지식이 부족하고, 머릿속에 정립이 덜 되었단 걸 느꼈다.


4. 내일 학습 할 것은 무엇인지

 

주말에 애니메이션 제작 및 페이드 인 아웃 생성

'TIL' 카테고리의 다른 글

25.04.29 TIL  (0) 2025.04.29
25.04.28 TIL  (0) 2025.04.28
25.04.24 TIL  (0) 2025.04.24
25.04.23 TIL  (0) 2025.04.23
25.04.22 TIL  (0) 2025.04.22