본문 바로가기

유니티

TIL(Today I Learned) - 67 오늘의 TILRegenManager 최적화:EnemyMover를 미리 캐싱하여 GetComponent 호출을 줄이고 성능을 개선했습니다.오브젝트 풀링을 활용하여 적 오브젝트와 관련 컴포넌트를 재사용하는 구조를 완성했습니다.적 배치 방식 변경:RegenManager 위치를 기준으로 X축 방향으로 일정 간격을 두고 적을 배치하도록 구현했습니다.spawnDistance를 활용해 배치 간격을 Unity Editor에서 쉽게 조정 가능하게 했습니다.컴포넌트 캐싱 활용:적 오브젝트의 주요 컴포넌트(EnemyMover)를 한 번만 초기화하고 이후 재사용하여 불필요한 작업을 제거했습니다.List 형태로 데이터를 관리해 코드 가독성과 유지보수성을 높였습니다.오늘의 작업으로 적 생성과 이동 로직이 더욱 효율적으로 개선되었.. 더보기
TIL(Today I Learned) - 65 오늘의 TIL (Today I Learned)액티브 스킬의 발동 조건 문제 해결액티브 스킬의 발동 조건을 히트 기반으로 변경하면서, 쿨타임 값이 0으로 고정되는 문제가 발생.IsReadyToActivate와 RemainingCooldown의 로직을 수정하여 쿨타임 기반과 히트 기반 조건을 명확히 분리함.히트 기반 스킬은 currentHits를 기준으로 처리하고, UI에도 올바르게 반영되도록 수정.ResetCondition 함수 수정스킬 타입에 따라 쿨타임(cooldownTimer)과 히트 횟수(currentHits) 초기화를 각각 처리하도록 개선.히트 기반 스킬에서는 currentHits를 0으로 초기화하여 조건이 다시 충족되도록 설정.SkillEquipSlot의 UI 로직 개선쿨타임 기반 스킬은 남은 .. 더보기
TIL(Today I Learned) - 64 오늘의 TIL (Today I Learned)인벤토리에 없는 스킬 표시 문제 해결:처음에는 인벤토리에 없는 스킬이 UI에 표시되지 않던 문제를 해결하려고 했다. 이 문제는 기본적으로 인벤토리에 없는 스킬은 아이콘이 보이지 않거나, UI에 표시되지 않는 상황이었음.이 문제를 해결하기 위해 **SkillInventorySlot**에서 인벤토리에 없는 스킬도 UI에 표시되게 하기 위한 로직을 추가했다.**SkillInventorySlot**에서 소유한 스킬과 소유하지 않은 스킬을 구분하여 UI에서 보여줄 수 있도록 했다. 소유하지 않은 스킬은 아이콘을 어둡게 처리하고, "No Inventory" 텍스트를 활성화해 사용자가 해당 스킬을 소유하지 않음을 인식할 수 있도록 했다.이때 아이콘의 알파값을 0으로 조정하.. 더보기
TIL(Today I Learned) - 62 오늘의 TIL (Today I Learned)1. 리팩토링 및 스킬 시스템 개선기존의 스킬 시스템을 객체지향적 구조로 리팩토링했습니다.스킬의 기본 클래스인 BaseSkill을 설계하고, 이를 상속받는 ActiveSkill, BuffSkill, PassiveSkill로 나누어 구체화했습니다.각 스킬 클래스에서 GetSkillEffect를 통해 스킬 효과 객체를 생성하고, 이를 SkillEffectManager에 전달하여 이펙트 및 효과를 처리하도록 개선했습니다.2. 스킬 클래스별 기능 세분화ActiveSkill: 즉시 발동하는 스킬로, 마나 소모 및 쿨다운이 존재합니다.BuffSkill: 일정 시간 동안 버프 효과를 적용하는 스킬입니다.PassiveSkill: 전투 중 조건에 따라 자동 발동되며, 쿨다운이.. 더보기
TIL(Today I Learned) - 61 오늘의 TIL (Today I Learned)문제: 합성 시스템의 개선문제 정의:게임에서 아이템 합성 시, 보유한 아이템 중 1개는 남겨두고 나머지를 합성에 사용해야 한다. 예를 들어, 5개가 있다면 4개는 합성에 사용되고, 1개는 남아 있어야 한다.해결 과정:PerformBatchFusion 메서드에서 아이템의 StackCount를 확인하고, 남겨야 할 1개를 고려하여 최대 합성 횟수를 계산하였다. 이를 통해 실제 합성 가능한 개수를 정확하게 추출할 수 있었다.기존의 Fuse 메서드는 변경하지 않고 그대로 유지하며, 필요한 조건만 추가하여 사용하였다. 기존에 잘 동작하던 기능을 그대로 유지하는 것이 중요하다는 교훈을 얻었다.문제: 마지막 등급 아이템 처리문제 정의:마지막 등급의 아이템은 합성할 수 없도.. 더보기
TIL(Today I Learned) - 60 오늘의 TIL1. 강화 상태와 UI 데이터 일치 문제 해결문제: 강화된 상태가 유지되지 않고, 화살표로 이동할 때 새로운 데이터가 로드되는 현상이 발생.원인: UI가 슬롯의 강화된 데이터를 참조하지 않고, DataManager에서 새로운 데이터를 가져오는 방식으로 구현되어 있었음.해결: 슬롯에서 넘겨받은 데이터를 기준으로 탐색하도록 수정하고, currentItem을 중심으로 데이터와 UI를 동기화.2. 수정된 접근 방식기존 방식: DataManager에서 데이터를 새로 가져와 사용 -> 강화 상태가 유지되지 않음.새로운 방식: 인벤토리의 리스트를 참조하여 currentItem을 기반으로 탐색. 슬롯의 데이터를 유지하면서 화살표 이동 가능.3. 주요 변경점SelectPreviousItem과 SelectNe.. 더보기
TIL(Today I Learned) - 59 오늘의 TIL (Today I Learned)장비 합성 로직 디버깅합성 로직에서 초기 데이터와 UI가 일치하지 않는 문제를 발견.SetEquipmentData에서 초기 데이터가 제대로 전달되지 않으면 이후 모든 로직에 영향을 미친다는 점을 확인.합성 후 기존 장비 스택 감소 및 결과물 추가 로직이 정확히 동작하도록 수정.UI와 데이터 동기화 문제 해결합성 후 UI가 갱신되지 않는 문제를 InitializeUI 호출로 해결.currentEquipment와 resultEquipmentData의 null 체크를 강화하여 데이터 누락 방지.최소 1개 남기기 조건 구현합성 시 최소 1개를 남겨야 하는 조건을 구현.materialCount와 maxMaterials 계산을 조정하여 합성 가능한 재료 수를 제한.사진 .. 더보기
TIL(Today I Learned) - 58 오늘의 TIL:UI 갱신과 실제 데이터 반영의 중요성문제 상황: 합성 후, 재료 아이템의 스택 수는 감소하지만 UI에서는 업데이트되지 않는 문제를 겪음.원인: Fuse 메서드 내에서 스택 수를 변경한 후, UI 갱신을 따로 호출하지 않아서 실제 데이터는 변하지만, 화면에 반영되지 않음.해결 방법: RemoveStack 호출 후 **UpdateInventorySlots()**를 호출하여 UI를 갱신함으로써 UI와 데이터 간 동기화를 맞춤.핵심 포인트:데이터 변경 후 UI도 동기화해야 한다는 점을 기억.UpdateInventorySlots() 메서드를 통해 아이템의 스택 수와 UI를 일치시킬 수 있음.오늘도 UI와 실제 데이터를 동기화하는 과정에서 중요한 점을 다시 한 번 확실히 알게 되었다. 더보기