본문 바로가기

C#

TIL(Today I Learned) - 63 오늘의 TIL (Today I Learned):추상화와 상속 구조:클래스 간 상속을 사용할 때, 공통 기능은 **부모 클래스(BaseClass)**에 추상 메서드로 정의하고, 각 하위 클래스에서 구현할 수 있도록 해야 한다. 예를 들어, BaseSkill 클래스에서는 스킬의 공통 로직을 정의하고, ActiveSkill, PassiveSkill, BuffSkill에서는 각각의 스킬에 맞는 구체적인 로직만 추가한다.쿨다운 및 타격 기반 스킬:쿨다운 기반의 스킬과 타격 기반 스킬은 각기 다른 조건에서 활성화된다. 쿨다운은 스킬 사용 후 일정 시간이 지난 후에 다시 활성화되는 방식으로 처리하며, 타격 기반은 특정 횟수의 타격이 이루어졌을 때 스킬이 발동된다.상속받은 클래스에서 로직 중복 방지:부모 클래스에서 이.. 더보기
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) - 59 오늘의 TIL (Today I Learned)장비 합성 로직 디버깅합성 로직에서 초기 데이터와 UI가 일치하지 않는 문제를 발견.SetEquipmentData에서 초기 데이터가 제대로 전달되지 않으면 이후 모든 로직에 영향을 미친다는 점을 확인.합성 후 기존 장비 스택 감소 및 결과물 추가 로직이 정확히 동작하도록 수정.UI와 데이터 동기화 문제 해결합성 후 UI가 갱신되지 않는 문제를 InitializeUI 호출로 해결.currentEquipment와 resultEquipmentData의 null 체크를 강화하여 데이터 누락 방지.최소 1개 남기기 조건 구현합성 시 최소 1개를 남겨야 하는 조건을 구현.materialCount와 maxMaterials 계산을 조정하여 합성 가능한 재료 수를 제한.사진 .. 더보기
TIL(Today I Learned) - 54 오늘의 TIL (Today I Learned)SkillInfoPopupUI 강화 로직 구현Skill 클래스의 강화 로직(Enhance)을 활용하여 UI에 강화 기능을 추가했다.강화 버튼 클릭 시 currentSkill.Enhance()를 호출하여 스킬의 강화 상태를 변경하고, 강화 성공 여부에 따라 UI를 갱신했다.스킬 효과 동적 텍스트 변경스킬 타입(액티브/버프/패시브)에 따라 효과 설명 텍스트를 동적으로 생성 및 변경하는 로직을 추가했다.액티브 스킬은 공격력 비율(n%), 버프 스킬은 공격력 증가율(n%), 패시브 스킬은 주기적 발동 효과를 기반으로 텍스트를 업데이트했다.UI 슬라이더 및 재료 표시강화에 필요한 재료의 현재 수량과 필요한 수량을 표시하는 슬라이더를 추가했다.materialSlider와.. 더보기
TIL(Today I Learned) - 53 오늘의 TILSkillEquipSlotManager와 EquipManager 동기화스킬 슬롯(Equip Slots)이 동적으로 생성될 때, 이를 EquipManager와 동기화하는 방법을 구현했습니다.SkillEquipSlotManager는 슬롯 변경 이벤트를 발생시켜 EquipManager가 스킬 상태를 동기화하도록 설계되었습니다.EquipManager의 기능 개선EquippedSkills 리스트를 활용해 스킬 장착 및 해제 로직을 재정비했습니다.슬롯 인덱스 유효성 검사를 추가하여 안정성을 강화했습니다.GetAllEquippedSkills 메서드로 현재 장착된 스킬만 반환하도록 수정했습니다.UIManager 활용UIManager에서 생성된 UI 프리팹 내부의 SlotManager를 자동으로 참조하도록 .. 더보기
TIL(Today I Learned) - 52 📌 오늘의 TIL (Today I Learned)1. UI 구성 및 참조의 중요성UI 구성에서 **인벤토리 슬롯(InventorySlot)**과 **스킬 슬롯(SkillSlot)**의 역할을 명확히 구분:InventorySlot: 인벤토리의 스킬을 관리하며, 클릭 시 해당 스킬 정보를 디테일 UI에 전달.SkillSlot: 스킬 장착 슬롯으로, 장착된 스킬의 정보를 저장하고 실행.각 UI 요소의 하위 버튼 참조 문제를 해결:Button이 InventorySlot의 하위에 있어 GetComponent()로 접근할 수 없었음.이를 해결하기 위해 직접 참조를 [SerializeField]로 연결하여 명시적으로 관리.2. UIManager 활용UIManager를 활용해 동적으로 UI를 활성화/비활성화:UIMa.. 더보기
TIL(Today I Learned) - 51 오늘의 TIL (Today I Learned)EquipManager 구조 및 기능:EquipManager는 현재 장착된 무기, 악세사리, 스킬을 각각 프로퍼티(EquippedWeapon, EquippedAccessory, EquippedSkill)로 관리.장착 및 해제는 EquipWeapon, EquipAccessory, EquipSkill 메서드를 통해 수행.장착 시 기존 장착 상태를 제거하고 새로운 상태로 갱신하며, 필요한 경우 효과(ApplyEffect 및 RemoveEffect)도 동적으로 반영.EquipManager는 플레이어의 현재 장착 상태를 항상 정확히 파악하는 중심 매니저.PlayerInventory 이벤트 활용:PlayerInventory에 정의된 OnSkillsChanged, OnWe.. 더보기