AssetDatabase 클래스를 사용하여 스크립트에서 에셋 생성 및 수정
·
Unity/Tip
Unity에서 에셋은 게임의 데이터를 저장하는 데 사용되는 파일입니다. 에셋에는 모델, 애니메이션, 사운드, 텍스처, 스크립트 등이 포함될 수 있습니다. Unity에서는 스크립트에서 에셋을 생성하고 수정할 수 있습니다. 이를 위해서는 AssetDatabase 클래스를 사용합니다. AssetDatabase 클래스 AssetDatabase 클래스는 에셋을 관리하는 데 사용되는 Unity의 기본 클래스입니다. 이 클래스는 에셋을 생성, 삭제, 수정, 검색하는 데 사용할 수 있습니다. 에셋 생성 AssetDatabase 클래스를 사용하여 에셋을 생성하려면 다음과 같은 단계를 수행합니다. AssetDatabase.CreateAsset() 메서드를 호출합니다. 메서드의 인수로 에셋의 데이터를 지정합니다. 예를 들어..
Unity에서 패키지의 버전을 변경하는 방법
·
Unity/Tip
Unity에서 패키지 버전을 관리하는 방법은 크게 두 가지가 있습니다. 하나는 PackageManager를 사용하는 방법이고, 다른 하나는 manifest.json을 사용하는 방법입니다. PackageManager를 사용하여 패키지 버전을 관리하는 방법은 간단합니다. 패키지 매니저 창에서 패키지를 선택하고, 버전 드롭다운 목록에서 원하는 버전을 선택하면 됩니다. 하지만, 패키지 매니저를 사용하여 패키지 버전을 다운그레이드하는 것은 약간 복잡합니다. 패키지의 종속성이 충돌할 수 있기 때문입니다. 이러한 문제를 해결하기 위해 manifest.json을 사용하여 패키지 버전을 직접 관리할 수 있습니다. manifest.json은 패키지의 정보를 포함하는 JSON 형식의 파일입니다. 버전 변경하는 방법 mani..
오브젝트 파괴 시 OnDestroy 이벤트 함수가 호출되지 않을 수 있다??
·
Unity/Tip
Unity에서 GameObject를 삭제하면 OnDestroy 메서드가 호출됩니다. OnDestroy 메서드는 GameObject가 삭제되기 전에 실행되는 메서드로, GameObject의 자원 해제, 데이터 저장 등의 작업을 수행하는 데 사용됩니다. 하지만, OnDestroy 메서드의 호출은 보장되지 않습니다. 즉, GameObject가 삭제되더라도 OnDestroy 메서드가 호출되지 않을 수도 있습니다. 공식문서의 설명을 보면 MonoBehaviour를 상속 받는 객체가 파괴 될 때 호출된다고 적혀 있습니다. 이 글을 보시는 분들은 다들 이 부분은 알고 계실것이라 생각합니다. 그 아래에 중요한 내용이 적혀 있는데 OnDestroy는 이전에 활성화되어있던, 게임 오브젝트상에서만 호출됩니다. 즉, 호출이 ..
Unity의 Ray에 찍힌 오브젝트를 검출하지 못하는 조건
·
Unity/Tip
Unity의 레이는 한 지점에서 다른 지점까지의 직선을 나타냅니다. 레이를 사용하여 게임 오브젝트를 검출할 수 있습니다. 그러나 다음과 같은 조건에서 레이에 찍힌 오브젝트를 검출하지 못할 수 있습니다. 레이의 시작 지점과 끝 지점이 모두 같은 경우 레이의 시작 지점과 끝 지점이 모두 같은 경우, 레이는 직선이 아닌 0차원 점으로 간주됩니다. 따라서, 레이를 사용하여 게임 오브젝트를 검출할 수 없습니다. 레이가 렌더링되지 않는 오브젝트를 통과하는 경우 레이는 렌더링되지 않는 오브젝트를 통과할 수 있습니다. 따라서, 레이를 사용하여 렌더링되지 않는 오브젝트를 검출할 수 없습니다. 레이가 Collider가 없는 오브젝트를 통과하는 경우 Collider는 물리 엔진에 의해 충돌을 처리하는 데 사용되는 컴포넌트입..
두 Collider의 충돌을 무시하는 방법
·
Unity/Tip
Unity의 Physics.IgnoreCollision 메서드는 두 Collider 간의 충돌을 무시하도록 설정합니다. public static void IgnoreCollision(Collider colliderA, Collider colliderB, bool ignore); //Parameters //colliderA: 충돌을 무시할 첫 번째 Collider //colliderB: 충돌을 무시할 두 번째 Collider //ignore: 충돌 감지 여부, 기본값은 true 예제 Collider collider1 = gameObject.GetComponent(); Collider collider2 = otherObject.GetComponent(); // 충돌을 무시합니다. Physics.IgnoreC..
Unity에서 Collider 충돌처리가 되지 않을 경우
·
Unity/Tip
Unity에서 Collider가 있는 두 오브젝트가 충돌하면 일반적으로 물리법칙에 따라 서로 밀거나 튕겨나가는 동작을 합니다. 하지만, 다음과 같은 경우에 Collider가 있는데도 충돌했을 때 물리법칙을 따르지 않는 경우가 있습니다. Collider의 Rigidbody가 없는 경우 Collider는 물리적 상호 작용을 처리하는 Rigidbody와 함께 사용해야 합니다. Rigidbody가 없는 Collider는 물리적 상호 작용을 처리할 수 없으므로, 충돌했을 때 물리법칙을 따르지 않는 경우를 만들 수 있습니다. 물체가 너무 빨리 움직여 충돌을 놓친 경우 물체가 한 프레임 사이에 너무 큰 거리를 이동하여 충돌을 감지하지 못하는 경우입니다. 이를 해결하기 위해서는 Rigidbody 컴포넌트의 Interp..
UnityException: Could not find any valid targets to launch on for Android
·
Unity/Tip
OperationFailedException: Installation failed. See the Console for details. UnityEditor.Android.AndroidDeploymentTargetsExtension.UploadAPK (UnityEditor.BuildReporting.BuildReport buildReport, UnityEditor.Android.AndroidDevice device, UnityEditor.ProgressTaskManager taskManager) 이와같은 에러가 발생하며 앱 빌드는 잘되지만 Unity Editor와 연결된 Android에 Install이 되질 않는 경우 Android에 설치된 해당 앱을 삭제하고 Build And Run을 하면 해결된다. ..
AdMob : "Ad unit doesn't match format."
·
Unity/Tip
Unity Editor에서는 광고 테스트가 잘되었는데 빌드한 뒤 Android에서 테스트 시 에러가 발생한다면, 광고를 요청할 때 사용한 클래스가 무엇인지 잘 확인해야 한다. 보상형 광고는 RewardedAd 클래스를 사용해야 하고, 보상형 전면 광고는 RewardedInterstitialAd 클래스이다. 아래 표는 AdMob 개발자 문서를 보고 정리한 내용이다. 광고 형식 클래스명 보상형 광고 RewardedAd 보상형 전면 광고 RewardedInterstitialAd 전면 광고 InterstitialAd 배너 광고 BannerView "Code": 3, "Message": "Ad unit doesn't match format.", "Domain": "com.google.android.gms.ads"..