Post

KDT Unity 2주차~4주차 팀플 빌드 오류 해결

2023-12-08 TIL

알고리즘 문제

오늘의 알고리즘 문제 : 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

1
2
3
4
5
6
public class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[] {};
        return answer;
    }
}

Desktop View

해결

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Solution {
    public int[] solution(int n, int m) {
        int max, min;
        max = n * m;
        if(n < m)
        {
            min = n; n = m; m = min;
        }
        while(m!=0)
        {
            min = n % m; n=m; m = min;
        }
        return new int[] {n,max/n};
    }
}

int max, min;을 사용하여 공약수와 공배수를 얻기 위한 변수를 생성합니다.

if(n < m)을 사용하여 각 수의 크기를 비교해 순서를 바꿉니다.

while(m!=0)을 사용하여 공약수를 구합니다.

return new int[] {n,max/n}; 공배수는 각 수의 곱/공약수 입니다.

Desktop View

프로젝트 빌드시 오류

에디터에서 작동시 정상적으로 작동을 합니다.

하지만 빌드시 오류가 나는 부분이 있었습니다.

JSON 오류

1
    string filePath = Path.Combine(Application.dataPath, "Resources/Json/CharacterDate.json");

를 사용하여 제이슨 파일의 위치를 가져와서 해당 값을 바로 역직렬화하여 사용하는 방법을 채택했습니다.

하지만 빌드시 해당 데이터를 가져오지 못하는 일이 생겼습니다.

Desktop View

Json 해결

1
TextAsset jsonFile = Resources.Load<TextAsset>("Json/CharacterDate");

을 사용하여 Resources파일에서 TextAsset으로가져오는 작업을 통해 한번더 바꿔 사용합니다.

그랬더니 정상 작동합니다.

Desktop View

DB 오류

에디터에서의 경우 UTF-8을 자동으로 지원하여 DB에서도 UTF-8을 설정해주니 에디터에서 정상 작동합니다.

하지만 빌드했을 때 에디터에서 지원하는 UTF-8 변환을 지원하는 플러그인이 빠지고 빌드하는 문제 발생합니다.

그래서 DB 오류가 발생합니다.

Desktop View

DB 해결

유니티 에디터에서 지원하는 UTF-8 변환 플러그인을 해당 프로젝트 assets 폴더 plugins 안에 복사해서 넣어주니 빌드시 해당 플러그인을 사용하여 해결하였습니다.

UTF-8 변환 플러그인 (에디터 설치 경로)/(유니티 경로)\Editor\Data\MonoBleedingEdge\lib\mono\unityjit-win32 안에 있는 I18N.dll와 I18N.West.dll 파일

Desktop View

오늘의 정리

빌드시 오류를 잡는 것은 크게 생각을 안해보았다.

왜냐하면 에디터에서 정상 작동하니까 빌드해도 다 정상 작동하겠지라는 생각이였다.

하지만 그렇지 않았고 빌드 후도 다 잡아줘야 하는 것이 중요했다.

앞으로 해야할 일과 하고 싶은 일이 많을 것 같다

Desktop View

This post is licensed under CC BY 4.0 by the author.