본문 바로가기

TIL(Today I Learned)/오늘 무엇을 배웠을까

TIL(Today I Learned) - 72 TIL (Today I Learned) - 2025년 1월 2일1. Unity에서 파티클 시스템 이펙트 처리Unity에서 스킬 이펙트가 플레이어 캐릭터나 적에게 적용될 때, 파티클 시스템을 활용하여 효과를 시각적으로 구현하는 방법에 대해 배웠습니다.파티클 시스템을 생성할 때, 이펙트가 적의 위치에 정확하게 생성되도록 Instantiate를 사용하고, 그 후 해당 이펙트를 적의 부모로 설정하여 적과 함께 이동하도록 처리했습니다.이펙트가 적에게 생성될 때 파티클 렌더링의 Sorting Layer를 조정하여, 파티클 이펙트가 다른 오브젝트를 가리지 않도록 Order in Layer 값을 변경하는 방법을 익혔습니다.2. 스킬 이펙트와 데미지 적용의 타이밍 맞추기스킬 이펙트와 데미지 적용의 타이밍을 맞추는 방법에.. 더보기
TIL(Today I Learned) - 71 📘 오늘의 TIL (Today I Learned)스킬 데미지와 기본 공격 데미지 분리PlayerDamageCalculator의 GetTotalDamage 메서드에서 isSkill 매개변수를 추가하여 스킬 데미지와 기본 공격 데미지를 분리하는 방법을 배웠습니다.ResetSkillEffects 메서드를 추가해 스킬 사용 후 스킬 효과를 초기화할 수 있도록 수정했습니다.애니메이션 이벤트를 활용한 스킬 데미지 타이밍 처리스킬 애니메이션 도중 특정 타이밍에 데미지가 들어가도록 애니메이션 이벤트를 설정하는 방법을 학습했습니다.Unity의 Animation 창에서 이벤트를 추가하고, 해당 이벤트가 호출할 메서드를 구현하는 과정을 익혔습니다.스킬 효과 초기화 및 상태 전환스킬 데미지가 기본 공격과 충돌하지 않도록, .. 더보기
TIL(Today I Learned) - 70 오늘의 TILUnity에서 ActiveSkill의 OnPlayer 타입 처리 개선문제: OnPlayer 타입의 액티브 스킬이 적에게 데미지를 적용하지 않는 문제가 발생.원인: PlayerSkillHandler에서 OnPlayer 타입 스킬이 발동될 때, 적 탐지는 했지만 데미지 전달 로직이 누락되어 있음.해결: HandleSkillUsed 메서드에서 OnPlayer 타입 스킬이 발동되면, Physics2D.OverlapCircleAll로 탐지된 적들에게 데미지를 적용하도록 수정.코루틴에서 비활성화된 오브젝트 문제문제: 적이 죽을 때 Coroutine couldn't be started because the the game object 'Enemy' is inactive! 오류 발생.원인: 코루틴 실행 중.. 더보기
TIL(Today I Learned) - 69 📌 오늘의 TIL: 프로젝타일과 애니메이션 제어 관련 문제 해결🎯 문제 상황액티브 스킬을 사용했을 때 프로젝타일 발사와 애니메이션 동작을 제어하는 과정에서 문제가 발생.스킬 발동 시 기존 애니메이션이 중단되지 않고 계속 실행됨.프로젝타일 관련 코드와 애니메이션 트리거 간의 충돌로 인해 스킬 효과가 기대대로 적용되지 않음.🔍 문제 원인Animator 상태 충돌:Any State에서 Attack 상태로 전환하는 구조가 애니메이션 동작을 중단하지 않고 중복 실행되도록 함.Animator 트리거 관리 미흡:Animator.ResetTrigger와 Animator.SetTrigger가 적절히 관리되지 않아서 상태가 중복 실행됨.스킬 실행 플래그 부재:스킬 사용 중인지 체크하는 플래그가 없어, 애니메이션이 반.. 더보기
TIL(Today I Learned) - 68 오늘의 TIL오브젝트 풀링과 초기화 문제 해결오브젝트 풀링 시스템에서 객체를 재사용할 때 초기화가 필요하다면 OnEnable을 활용해야 한다는 것을 배웠습니다.Awake나 Start는 객체가 처음 생성될 때만 호출되므로, 풀링된 객체가 다시 활성화될 때 초기화하려면 OnEnable에서 필요한 작업을 처리해야 합니다.캐싱된 객체와 싱글톤 활용PlayerObjManager.Instance와 같은 싱글톤을 활용하면 플레이어와 같은 특정 객체를 효율적으로 참조할 수 있다는 것을 배웠습니다.오브젝트 풀링된 적(enemy)에서 플레이어 데이터를 매번 GetComponent로 가져오는 대신, 싱글톤을 활용하여 OnEnable 시점에 초기화할 수 있습니다.코드 최적화와 가독성OnTriggerEnter2D와 OnTrig.. 더보기
TIL(Today I Learned) - 67 오늘의 TILRegenManager 최적화:EnemyMover를 미리 캐싱하여 GetComponent 호출을 줄이고 성능을 개선했습니다.오브젝트 풀링을 활용하여 적 오브젝트와 관련 컴포넌트를 재사용하는 구조를 완성했습니다.적 배치 방식 변경:RegenManager 위치를 기준으로 X축 방향으로 일정 간격을 두고 적을 배치하도록 구현했습니다.spawnDistance를 활용해 배치 간격을 Unity Editor에서 쉽게 조정 가능하게 했습니다.컴포넌트 캐싱 활용:적 오브젝트의 주요 컴포넌트(EnemyMover)를 한 번만 초기화하고 이후 재사용하여 불필요한 작업을 제거했습니다.List 형태로 데이터를 관리해 코드 가독성과 유지보수성을 높였습니다.오늘의 작업으로 적 생성과 이동 로직이 더욱 효율적으로 개선되었.. 더보기
TIL(Today I Learned) - 66 오늘은 Unity에서 **SkillEffectManager**와 BaseSkill 클래스 간의 상호작용을 분석하고, 오브젝트 이름이 한글로 표시되는 문제를 디버깅했습니다. 주요 학습 내용은 다음과 같습니다:Prefab 이름과 생성된 오브젝트 이름:Unity에서 Instantiate로 생성된 오브젝트의 기본 이름은 프리팹 이름을 따릅니다.SkillDataSO의 effectPrefab 이름은 영어로 설정되어 있었으나, 다른 로직에서 이름이 한글로 변경될 가능성이 높았습니다.BaseSkill 클래스와 SkillEffect의 역할:BaseSkill의 GetSkillEffect는 SkillDataSO 데이터를 기반으로 SkillEffect 구조체를 생성하며, 이 구조체는 SkillEffectManager.Trig.. 더보기
TIL(Today I Learned) - 65 오늘의 TIL (Today I Learned)액티브 스킬의 발동 조건 문제 해결액티브 스킬의 발동 조건을 히트 기반으로 변경하면서, 쿨타임 값이 0으로 고정되는 문제가 발생.IsReadyToActivate와 RemainingCooldown의 로직을 수정하여 쿨타임 기반과 히트 기반 조건을 명확히 분리함.히트 기반 스킬은 currentHits를 기준으로 처리하고, UI에도 올바르게 반영되도록 수정.ResetCondition 함수 수정스킬 타입에 따라 쿨타임(cooldownTimer)과 히트 횟수(currentHits) 초기화를 각각 처리하도록 개선.히트 기반 스킬에서는 currentHits를 0으로 초기화하여 조건이 다시 충족되도록 설정.SkillEquipSlot의 UI 로직 개선쿨타임 기반 스킬은 남은 .. 더보기