전체 글(30)
-
unity6 빌드에러 "property#android.adservices.AD_SERVICES_CONFIG@resource=@xml/gma_ad_services_config` in com.google.android.gms:play-services-measurement-api:22.1.2 collides with another value"
최근 Unity 6로 업그레이드한 뒤, Android 빌드에서 오류가 발생하는 경우가 많습니다. 특히 구글 애드몹(AdMob)이나 파이어베이스(Firebase) 같은 광고·분석 플러그인을 사용하는 프로젝트라면 ‘릴리스 빌드가 안 된다’, ‘충돌 메시지가 뜬다’ 등의 문제를 겪으실 수 있는데요. 이 오류는 **AGP 8.3.0(Android Gradle Plugin)**과 일부 구글 라이브러리 사이에서 발생하는 충돌이 원인으로 지목되고 있습니다.AGP(Android Gradle Plugin)란?AGP(Android Gradle Plugin): 안드로이드 앱을 빌드·패키징·배포하기 위해 구글에서 제공하는 Gradle 플러그인입니다.Unity에서 안드로이드 APK 또는 AAB를 빌드할 때도 내부적으로 이 An..
2024.12.24 -
Unity에서 랜덤 구현하기: XoroShiro++ 기반 CustomRandom 클래스
랜덤은 게임 개발에서 매우 중요한 요소입니다. 적의 위치, 보상의 종류, 랜덤 이벤트 등을 결정할 때 사용되며, 보다 정밀하고 다양한 랜덤이 필요할 때는 커스텀 랜덤을 사용하는 것이 좋습니다. 이번 포스트에서는 XoroShiro++ 알고리즘을 기반으로 하는 CustomRandom 클래스를 구현하고, 이를 통해 다양한 랜덤 값을 생성하는 방법을 소개합니다.XoroShiro++ 알고리즘 기반의 RNGXoroShiro++는 매우 빠르고 균등한 난수 분포를 제공하는 알고리즘으로, 64비트 환경에서 효과적으로 동작합니다. 이 알고리즘은 XOR 연산과 시프트 회전(Rotate Left) 연산을 조합하여 난수를 생성합니다. // Xoroshiro++ : https://prng.di.unimi.it/public str..
2024.08.22 -
Unity와 iOS 네이티브 코드 연동하여 iCloud 데이터 저장 구현하기
Unity 게임 개발에서 iCloud와 같은 iOS 고유 기능을 활용하려면, iOS 네이티브 API를 Unity와 연동해야 합니다. 이 글에서는 iOS의 네이티브 코드를 작성하고 이를 Unity C# 코드와 연결하여 iCloud 데이터를 저장하고 불러오는 방법을 설명하겠습니다.iOS 네이티브 코드 구현먼저, iOS 네이티브 코드를 Objective-C로 작성합니다. 이 코드는 iCloud에 데이터를 저장하고 불러오는 기능을 제공합니다.Objective-C 클래스 구현 ,네이티브 함수와 Unity 연동Objective-C로 작성한 iOS 네이티브 코드를 Unity에서 호출할 수 있도록 외부 함수로 노출해야 합니다. 이를 위해 extern "C"를 사용하여 C# 코드에서 호출 가능한 형태로 함수를 정의합니다..
2024.08.22 -
Unity에서 JSON 데이터 저장 및 검증: HMACSHA256을 이용한 보안
게임 개발에서 데이터 저장과 보안은 매우 중요한 문제입니다. 특히 플레이어의 진행 상황이나 설정을 저장할 때, 데이터의 무결성을 보장하는 것이 중요합니다. 이번 포스트에서는 Unity에서 Newtonsoft.Json 라이브러리를 사용하여 데이터를 JSON 형식으로 직렬화하고, HMACSHA256 해시 알고리즘을 사용하여 데이터를 서명하고 검증하는 방법을 다루겠습니다. 이를 통해 데이터가 변조되지 않았는지 확인할 수 있습니다. 먼저, Unity 프로젝트에 Newtonsoft.Json 라이브러리를 추가해야 합니다. https://gofogo.tistory.com/64[package manager]로 이동 후 [add pakaage by name...] 선택 com.unity.nuget.newtonsoft-j..
2024.06.12 -
unity // 구글플레이 인앱업데이트 안드로이드14 타켓 오류
One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcastsjava.lang.SecurityException: com.wolstar.fruitfusionmerge: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcastsandroid.os.Parcel.createExceptionOrNull(Parcel.java:306..
2024.06.09 -
[유니티] 문자열을 이용하여 클래스 인스턴스 생성하기 :상속 관계에서의 동적 클래스 생성
A라는 클래스를 상속한 나머지 클래스를 문자열로 생성할 때 여러 가지 방법이 있는데 스위치로 생성하거나 딕셔너리를 이용해서 생성하는 방법이 있습니다. 예시를 보자면 public class BaseEffect { public virtual void Action() { } } public class Attack : BaseEffect { public override void Action() { Debug.Log("Attack Action"); } } public class Defense : BaseEffect { public override void Action() { Debug.Log("Defense Action"); } } BaseEffect 를 상속한 Attack 과 Defense를 불러올 때 방법은 ..
2024.03.24