본문 바로가기

반응형

Program Tip

(10)
유니티 개발 팁 - AndroidSdkVersions Enum 오류 (기록용) 유니티 개발 중 여러 플러그인을 사용하게 되는데, 그중 구글 관련 플러그인을 사용하다보면 Resolver 충돌 현상이 자주 일어난다. Resolver는 최근 리졸버를 남겨두고 버전이 낮은 Resolver는 Import 시키지 않도록 하는게 좋은것 같다.(정확하지 않음. 나름 경험에 의한 결과라고 생각됨) 또 플러그인을 임포트하고 Resolver를 하다보면 GooglePlayServices.UnityCompat.Versionfromandroidsdkversions enum 이런 오류를 발생하기도 함. 이 오류는 Project Settings -> Player -> Target API Level 선택 시 어떤 API는 이름이 있는데, 어떤 API는 이름이 없는 경우가 있음. 이 이름이 내부적으로 Enum으로..
유니티 Resources.Load<Sprite>() null을 반환하는 문제 수정(기록용) 유니티 에디터에서는 정상적으로 잘 되지만, Android Device에만 올라가면 Resources.Load(path) 함수가 문제를 일으키는 일이 종종 있다. 어떤 경우인지 기술해본다. 광고를 보고 리워드 아이템을 지급하기 위해서 팝업 등으로 획득한 리워드를 확인하기 위해 프리팹을 로드 하거나, UI 등의 게임 오브젝트에 접근하여 리소스 로드 등을 할때 주로 발생하는 문제로 확인된다. 이는 광고 등을 보고 콜백을 받을 경우 UI Thread가 아닌 Main Thread라는 것으로 콜백을 받게 된다. 이 Main Thread와 UI Thread는 서로 다른 Thread로 Main Thread에서 UI 등에 접근하기 위해서는 UI Thread의 타이밍에 접근해야 하는데, 그렇게 하지 않고 바로 UI 등 게..
유니티 2021.3.15f1 에서 Admob SDK GoogleMobileAds-v7.4.0 임포트시 발생하는 문제 수정. 이미 해당 프로젝트에는 UnityAds, UIAP가 설치되어 있는 상태이다. GooglePlayGamesPlugin-0.11.01 구글 플레이 서비스 플러그인도 설치되어 있는 상태. 이 상태에서 애드몹 플러그인을 설치하니 빌드상에는 큰 문제가 없었다. 그러나 어플을 실행하니 어플이 즉시 다운되는 문제가 발생했다. 문제 해결을 위한 방법은 애드몹에서 앱 아이디를 설정할 필요가 있었다. 해결 방법 1. 구글 애드몹 웹페이지에서 해당 앱의 앱 아이디 정보를 복사해온다. 2. 유니티 > Assets > Google Mobile Ads > Settings 선택 3. 1번에서 복사한 앱 아이디를 입력해준다. 앱 아이디 설정 후 빌드 테스트를 해보니 정상적으로 플레이가 됨을 확인 하였다. 앱 아이디 설정 안했다고 강..
Unity 2021.3.15f Google Play Game Service Plug-ins 연동 오류 수정(기록용) Unity 2021.3.15f 에 GooglePlayGamesPlugin-0.11.01.unitypackage 추가 후 발생하는 빌드 오류 문제 수정 처음 플러그인 추가시 Google.VersionHandler 중복 이슈가 발생한다. 하나는 MobileDependencyResolver/Google.VersionHandler 이고, 다른 하나는 ExternalDependencyManager/Google.VersionHandler 의 중복으로 하나를 삭제 해줘야한다. 처음 MobileDependencyResolver/Google.VersionHandler 해봤더니 빌드 오류 발생. 다른 여러가지를 테스트 해보았으나 해결되지 않음. 그래서 다시 ExternalDependencyManager/Google.Ver..
Unity 2021.3.15f 버전에서 UnityAds 4.4.1 버전을 추가할 시 발생하는 오류 수정 방법(기록용) Unity 2021.3.15f 에서 UnityAds 4.4.1 버전을 추가하면 아래와 같은 오류가 발생한다. FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':launcher'. > Could not resolve all artifacts for configuration ':launcher:classpath'. > Could not find com.android.tools.build:gradle:6.1.1. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/android/tool..
C# 클리커 게임의 화폐 단위 표현 방법 (Double 형) 클리커류의 게임을 많이 해봤을 것이다. 그런류의 게임을 보면 1,000단위, 10,000,000 단위 등 억,조,경 이상의 단위를 사용하는 경우가 있다. 그런데 표현을 보면 1a, 2aa, 2.5ab 등으로 문자로 단위를 표기하는 것도 본 적이 있을 것이다. 나도 용사는 직진중 이라는 게임을 만들때 헤아릴 수 없는 단위로 올라갈 경우 a, b, c, aa, ab 등의 단위를 사용하여 표현해 주었다. 정수형으로는 표현해줄 수 없으며 Double 형을 조금 변경해서 사용하면 가능하다. 약 소수점 300개 정도까지 가능하며, 단위로는 a 부터 cx 단위까지 사용이 가능하다. 각 단위가 올라가는 조건은 000이 3개. 즉 1,000단위로 단위가 변경된다고 보면된다. 차후에도 이런 표현방법을 사용할 수 있기에 기..
Unity에서 유용하게 사용될 오브젝트 풀링(Object Pooling) 오브젝트 풀링은 유니티에서 아주 자주 사용하는 로직이다. 매번 오브젝트를 생성/파괴를 하는 것이 아닌 한번 생성했던 오브젝트를 리스트(List) 또는 큐(Queue)에 저장해 두었다가 재사용하고 사용이 완료된 후엔 반납하는 역할을 하는 것이 오브젝트 풀링이다. 여러 차례 게임을 개발하며 오브젝트 풀링 관리하는 방법을 개선하곤 했었는데, 이번에 조금 더 많은 개선이 이루어지며 편리해졌다는 판단을 하게 되었다. 기존에는 오브젝트 풀링을 사용하기 위해서는 여러가지 절차들이 많이 필요했었다. 씬의 빈 공간에 빈 GameObject를 만들어서 거기에 풀링 매니저 스크립트를 넣고, 컨테이너를 만들어서 적용하는 등등 여러 절차들이 필요했었다 이러한 여러 절차들을 자동으로 처리할 수있도록 개선하였으며, 소스 상에서 G..
정수로 표현하지 못하는 큰수를 더하기 int main() { //calc add std::string a = "1000"; std::string b = "99000"; std::string c = "100000"; std::string result; TRACE("a [%s] + b [%s]", a.c_str(), b.c_str()); int a_len = a.length(); int b_len = b.length(); int len = a_len > b_len ? a_len : b_len; std::reverse(a.begin(), a.end()); std::reverse(b.begin(), b.end()); char sum = 0; char ai = 0; char bi = 0; char up = 0; char rem = 0; for (si..

반응형