Unity 240

AndroidExternalToolsSettings' does not exist

Error유니티 버전 업 후 아래와 같은 에러 발생 Assets\GooglePlayPlugins\com.google.android.appbundle\Editor\Scripts\Internal\BuildTools\AndroidSdk.cs(101,23): error CS0234: The type or namespace name 'AndroidExternalToolsSettings' does not exist in the namespace 'UnityEditor.Android' (are you missing an assembly reference?)  Solution설치과정에서 일부 Android 구성요소가 제대로 설치되지 않음(제대로 설치된 경우는 Editor를 재시작하면 해결된다고 함)

Unity/Unity 이슈 2024.08.07

유니티 빌드 Warning

🤖 Android APKYou are making a release build and using a custom signing key, but it does not have native 64-bit support.   Solution64비트 지원 없는 커스텀 서명 키릴리즈 빌드에서 64비트 지원이 없는 커스텀 서명 키를 사용 중이라는 경고 메시지입니다. 이는 구글 플레이 스토어의 정책을 준수하기 위해 필요합니다. 이 문제를 해결하려면 다음 단계를 따르세요:유니티 에디터를 엽니다.File 메뉴 > Build Settings로 이동합니다.플랫폼을 Android로 설정한 후 Player Settings 버튼을 클릭합니다.왼쪽 메뉴에서 Other Settings로 이동합니다.Configuration 섹션에서 ..

Unity/Unity 이슈 2024.08.04

MeleeWeapon 일때 때리기 모션이 1회만 나오는 거 해결

공격모션 애니매이션을 SingleUseAnimationParameter에 할당한다. 첫 한대만 때리는 문제가 발생할 때는 StartAnimatonParameter에 할당되어 있었다. 로그상 채크해보면 쟤는 WeaponState == WeaponStates.WeaponStart 일때만 발생. 이건 최초 무기 사용때만 적용됨. 참고로 UseAnimationParameter 은 사용하는동안 지속되는 한가지 모션을 뜻한다. 움직이지 않고 첫 프레임에만 멈춰있음.

Unity/TopdownEngine 2024.04.10

VideoPlayer에서 Graphics device is null

Error VideoPlayer 접근 시 아래와 같은 에러 발생. Graphics device is null. ① Firebase에 Login한 이후에 VideoPlayer 접근 시 발생 ② Editor에서는 아무 이상 없으나 Android 디바이스에 빌드해서 실행할 때 발생 ③ 최초 1회는 괜찮으나, 2회째 실행부터 발생 ④ 다른 씬으로 이동해서 VideoPlayer실행하면 괜찮음 .Firebase로그인이 일어난 씬에서 문제발생. Solution Unity자체의 버그 같음. Firebase ,Admob 사용시 이런 류의 버그가 발생하는 것 같음. 이것저것 해보다가.. 아무래도 Thraed문제인것 같아, 문제가 발생하는 부분을 코루틴으로 빼서 동작했더니 버그 없이 정상동작. private IEnumera..

Unity/Unity 이슈 2024.03.24

Unity에 AdMob 구현

📗참고: https://learnandcreate.tistory.com/2365 패키지 설치 Admob Package 다운로드: https://github.com/googleads/googleads-mobile-unity/releases (v8.6.0 받음) 테스트 할거면 Android에 테스트 아이디 넣음 ca-app-pub-3940256099942544~3347511713 📃Document: https://developers.google.com/admob/unity/rewarded?hl=ko Admob에서 앱 추가 📌Admob: https://apps.admob.com/v2/home 광고단위 추가 구글 샘플프로젝트 📑Init하는 부분 https://github.com/googleads/googlead..

Weapon Life cycle Debug

특이한 케이스에서 발생하는 엔진 자체의 버그인것 같음 다소 복잡하므로 나중을 대비하여 기록. Error Enemy의 Weapon이 재장전 상태에 있을 때 Enemy의 시야에서 벗어났다가 다시 재진입하면 공격을 하지 않는 버그 Description Weapon의 Lifecycle은 아래와 같음 (이 순서대로임) protected virtual void ProcessWeaponState() { if (WeaponState == null) { return; } UpdateAnimator(); switch (WeaponState.CurrentState) { case WeaponStates.WeaponIdle: CaseWeaponIdle(); break; case WeaponStates.WeaponStart: C..

Unity/TopdownEngine 2023.12.18

WeaponAim의 Unrestrict3DAim 옵션 선택 시 다리를 조준하는 원인

코드를 분석결과 Weapon과 같은 GameObject에 있는 WeaponAutoAim에서 목표지점의 방향벡터를 구하는 부분 WeaponAutoAim.cs protected override void SetAim() { _aimDirection = (Target.transform.position - _raycastOrigin).normalized; _weaponAim.SetCurrentAim(_aimDirection, ApplyAutoAimAsLastDirection); } Target.transform.position 에서 타겟의 포지션을 받아오는데, 현제 게임의 Character들은 Root Transform의 y좌표가 0이고, 그로부터 위로 쌓아져 있다. Solution 1 Chracter의 Root..

Unity/TopdownEngine 2023.12.11

Character에 새 애니매이션 추가

📌https://futurecatlabs.store/413 위 블로그를 참조하면 원하는 애니매이션 Cip을 생성 할 수 있다. 단 위 예제에서는 단일 애니매이션 재생만 가능하고, 이를 기존에 제작된 AnimationController에 넣으면 제대로 동작을 하지 않는다. 👹 Error some generic clip animate transforms taht ar already bound by a Humanoid avatar. These transforms can only be changed by Humanoid clips. Avatar는 Animation과 3D 모델의 본 구조를 정의하고, 이 본들이 애니메이션 데이터에 어떻게 연결되는지 결정한다. 그리고 이 avatar와 연동되려면 Animation형..

Unity 2023.11.19

Strategy Pattern을 이용한 Unity Firebase 로그인

플랫폼별 로그인 분기에 사용 Android, UnityEditor, Ios일때 Firebase로그인 방법을 각각 다르게 구현하여야 한다. 연습용으로 해보기 좋은 것 같아 블로그에 기록해둠. 이 패턴으로 안하면 클래스에 If문으로 나누고, 여러 매소드를 만들어서 구현하면 된다. ex) private void MockLogin(); private void AndroidLogin(); private void IosLogin(); 📌Monobehavior 상속 비동기 처리를 위해 코루틴이 사용된다. 코루틴은 Monobehavior에서만 동작하므로 BaseLoginController는 Monobehavior를 상속하고, new가 아니라 addComponent로 씬에 추가하여야 함. 📌UnityAction 사용 비..

Unity 2023.10.15

Inspector에서 변수 타입을 동적으로 설정 (MMEnumCondition)

* 자세한 구현은 MMLoot 클래스 참조 List의 경우 바로 쓰면, 다른 enum이 선택되어도 사라지지 않고 계속 남아있어서 클래스로 한번 싸서 적용. public enum ExpModes { Unique, List, ScriptableObject } [Space(10)] [Header("데이터 타입")] public ExpModes ExpMode = ExpModes.Unique; [MMEnumCondition("ExpMode", (int)ExpModes.Unique)] [SerializeField] private int expPoint; [MMEnumCondition("ExpMode", (int)ExpModes.List)] [SerializeField] private MMCustomList expL..

Unity/TopdownEngine 2023.08.15