유니티 HDRP(HD Render Pipeline) 프로젝트 시작하기(Volume, Quality, Frame Settings)HDRP Global Settings, Global Volume 1)프로젝트 설정(Project settings)의 Graphics에서 프로젝트에서 사용중인 렌더파이프라인을 확인합니다. 현재 프로젝트는 HDRP(HD Render Pipeline)로 설정되어있는것을 확인할수있습니다. 2)Graphics 하위 메뉴 HDRP Global Settings에서 전역(Global)으로 사용할 글로벌 볼륨 프로파일 (Volume Profile)을 설정합니다. 3)프로젝트에서 새로운 볼륨 프로파일(Volume Profile)을 생성합니다. 볼륨 프로파일은 카메라의 씬(Scene) 환경을 렌더링..
유니티(Unity) 리지드 바디 설명(Rigidbody)리지드바디(Rigidbody)는 게임오브젝트가 물리엔진의 통제하에 놓이도록합니다. 리지드바디는 게임오브젝트가 사실적으로 움직이도록 힘(Force)과 토크(Torque)를 받을수있습니다. 어떤 오브젝트가 중력의 영향을 받거나 스크립팅을 통해 힘이 가해지거나 다른오브젝트와 상호작용하기위해서 리지드바디를 가져야합니다.이것은 사실적인 충돌, 다양한 타입의 조인트 행위를 위한 시작입니다. 리지드바디에 힘을 가함으로써 게임오브젝트를 조작(manipulate)하면 트랜스폼 컴포넌트를 직접 조작하는것보다 더 다양하고 사실적인 느낌의 움직임을 만들어낼수있습니다. 일반적으로 동일한 오브젝트의 리지드바디와 트랜스폼을 동시에 조작하는것은 추천되지않습니다. 둘의 가장 큰 ..
유니티 Random 클래스 랜덤 수(Random.Range, Random.value) 사용 예시Random.Range최소값과 최대값 사이의 무작위 수를 반환합니다. 무작위 위치 생성 GameObject prefab; float x = Random.Range(-5.0f, 5.0f); float z = Random.Range(-5.0f, 5.0f); Debug.Log("X,Z:" + x.ToString("F2") + ","+ z.ToString("F2")); Vector3 randomPosition = new Vector3(x, 0.0f, z); Instantiate(prefab, randomPosition, Quaternion.identity); float x=Random.Range(-5.0f, 5.0f)..
유니티(Unity) 오디오 소스(AudioSource) 플레이 함수 Play()와 PlayOneShot() 차이유니티에서 오디오를 재생하는 데 사용되는 두함수 AudioSource.Play()와 AudioSource.PlayOneShot() 차이AudioSource.Play()오디오 소스에 지정된 오디오 클립(AudioClip)을 재생합니다. 새로운 Play() 호출은 이미 재생중인 클립을 취소하고 새로운 재생을 시작합니다. AudioSource는 모든 Play 함수 호출에 재생할 새 오디오 클립이 있다고 가정합니다. https://docs.unity3d.com/ScriptReference/AudioSource.Play.html Play함수를 새로 호출하면 클립이 다시 시작된 것처럼 들립니다. Audio..
유니티(Unity)에서 다양한 코루틴(Coroutine) 사용 예시시간 지연 특정 시간 동안 대기한 후 다음 작업을 수행public class DelayExample : MonoBehaviour { private void Start() { StartCoroutine(WaitAndPrint(2.0f)); // 2초 후 메시지 출력 } private IEnumerator WaitAndPrint(float waitTime) { yield return new WaitForSeconds(waitTime); Debug.Log("Waited for " + waitTime + " seconds."); } } 프레임마다 반복매 프레임..
유니티(Unity)에서 지원하는 비디오 파일 형식https://docs.unity3d.com/Manual/VideoSources-FileCompatibility.html유니티 프로젝트에 다양한 형식의 비디오 파일을 가져오기할수있습니다. 유니티로 가져오기한 비디오 소스 파일은 비디오 클립(VideClip)으로써 저장하며 파일 형식이 에디터를 실행하는 플랫폼(예 -윈도우)과 호환되어야합니다. 플랫폼이 해당 파일 형식을 지원하면 에셋의 가져오기 설정(import settings)에서 비디오 미리보기(preview)를 표시합니다. 윈도우에서 지원하는 동영상 포맷 https://learn.microsoft.com/en-us/windows/win32/medfound/supported-media-formats-in-..
유니티(Unity)에서 싱글톤(Singleton) 디자인 패턴 사용 예시싱글톤(Singleton)은 오직 하나의 인스턴스만 존재해야 하는 클래스를 만들기 위한 디자인 패턴으로 특정 클래스의 인스턴스가 중복 생성되지 않도록 제한하고 어디서든 인스턴스에 접근할 수 있습니다. 전역적으로 사용할 수 있는 매니저 클래스를 만들때 특히 유용합니다(GameManager , UIManager, AudioManager, 기타)https://learn.unity.com/project/c-survival-guide-singletons?language=enhttps://learn.unity.com/tutorial/statics-l#5c8920e7edbc2a0d28f4833c싱글톤 사용 예시 GameManager 클래스pu..
유니티(Unity)에서 오브젝트 풀(Object Pool) 의 유용성과 사용 예시게임에서 자주 생성하고 파괴되는 오브젝트가 많은 경우 오브젝트 풀(Object Pool)을 사용하면 메모리 할당 및 해제로 인한 성능 저하를 줄일 수 있습니다. 오브젝트 풀(Object Pool) 사용가능 예총알 발사 시스템 (Bullet Firing System) 총알을 발사할 때마다 새로운 총알 오브젝트를 생성하고 파괴하는 경우 적군 스폰 시스템 (Enemy Spawn System) 적군이 계속해서 스폰되고 사라지는 시스템에서 적 오브젝트의 생성과 파괴가 빈번하게 일어나는 경우 파티클 효과 시스템 (Particle Effects) 폭발, 연기, 불꽃 등 다양한 파티클 효과 짧은 시간 동안 생성되고 빠르게 사라지는 경우..
유니티(Unity) 안드로이드에서 동영상 광고(구글애드몹) 표시하면 앱 크래시 문제(Graphics device is null)구글 애드몹 동영상 광고를 표시하고나서 팝업 닫기(close) 이후 TMPro(텍스트 메시 프로)를 사용할때 앱 크래시가 발생합니다.1)안드로이드 로그캣에서 앱 크래시 로그를 확인합니다.Graphics device is null, TMPro.TextMeshProUGUI:Awake() 동영상 광고 팝업 닫기 이후에 앱 크래시2)예에서 보상형 동영상 광고 팝업 닫기(OnAdFullScreenContentClosed) 이벤트를 수신하면 OnRewarded함수를 호출합니다. 3)OnRewarded함수에서 TMPro 텍스트가 포함된 오브젝트를 생성할때 앱 크래시가 발생합니다. 4)해당 ..
구글 플레이 콘솔 안드로이드 앱 번들 파일(aab) 업로드 문제와 해결방법API 수준현재 앱이 33의 api 수준을 타겟팅하고 있지만 보안 및 성능에 최적화된 최신 api를 기반으로 앱을 빌드하려면 api 수준 34 이상을 타겟팅해야 합니다구글 플레이 콘솔에서 요구하는 최신 API로 설정합니다. 프로젝트 설정(project settings)의 플레이어(player)에서 대상 api 수준을 변경합니다(Target API Level)버전 코드이미 버전 코드가 1인 APK 또는 android app bundle이 있으므로 다른 버전 코드를 사용해야 합니다.프로젝트 설정에서 번들 버전 코드(Bundle Version Code)를 높입니다. 64비트 요구사항이 버전은 google play 64비트 요구사항을 준..
유니티 인앱결제(Unity In-App Purshasing, IAP) 구매 복원(Restore) 구현(안드로이드, iOS)사용자가 앱을 재설치할때 이미 소유하고있는 비소모 상품 또는 구독 상품이 거래 복원되어야합니다. https://docs.unity3d.com/Manual/UnityIAPRestoringTransactions.html안드로이드(구글플레이) 안드로이드(구글플레이)는 첫번째 초기화 단계(OnInitialized 함수)에서 사용자의 상품(비소모 또는 구독) 구매이력을 검색하고 소유한 모든 상품을 자동으로 복원합니다. 소유한 비소모품 상품이 존재하면 자동으로 해당 상품에 대해 ProcessPurchase 함수를 호출합니다. iOS(애플, 앱스토어) iOS 플랫폼에서는 거래 복원을 자동으로 수행..
유니티 인앱결제(Unity In-App Purshasing, IAP) 초기화 및 상품 구매 구현IAP 패키지의 샘플(Samples) 프로젝트에서 IAP 초기화 및 상품 구매구현 방법을 참고합니다.1)패키자 관리자(Package manager)에서 IAP 패키지를 설치합니다. 설치한 IAP 패키지의 samples에서 IAP 샘플 프로젝트를 확인할수있습니다. import를 클릭하여 상품 구매 buying consumables 샘플을 프로젝트로 가져오기합니다. 2)프로젝트에서 IAP 샘플 씬 및 스크립트를 확인합니다. 3)Purchasing, Purchasing.Extension 네임스페이스를 선언하고 IDetailedStoreListener 인터페이스를 상속합니다.Purchasing - 제품 목록 정의, 결..