스파르타 썸네일형 리스트형 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.. 더보기 TIL(Today I Learned) - 50 오늘의 TIL1. 슬레이어 키우기 구조 이해게임의 주요 데이터(무기, 악세사리, 스킬)를 효율적으로 관리하기 위해 DataManager 설계가 필요하다는 점을 확인했습니다.강화 시스템, 상점, 전투 등 다양한 시스템에서 이 데이터를 공유해야 하기 때문에, 데이터를 중앙에서 관리하는 구조가 중요하다고 배웠습니다.2. DataManager 설계 및 구현DataManager의 역할모든 무기, 악세사리, 스킬 데이터를 리스트로 관리합니다.특정 아이템을 검색하거나 데이터를 추가/수정할 때 이를 통합적으로 처리합니다.SO 데이터를 자동으로 로드기존에는 데이터를 수동으로 드래그해 넣어야 했지만, Resources.LoadAll을 사용하여 특정 폴더에서 데이터를 자동으로 로드하도록 변경했습니다.이를 통해 150개의 데.. 더보기 TIL(Today I Learned) - 49 📘 오늘의 TIL (Today I Learned)ScriptableObject를 활용한 데이터 관리SkillSO, WeaponDataSO, AccessoryDataSO와 같은 아이템 데이터를 ScriptableObject로 관리하면, 데이터의 재사용성과 유지보수성이 높아진다.공통 속성은 BaseItemSO로 추출하여 상속 구조를 통해 효율적으로 관리할 수 있다.Resources.Load의 사용법과 대안Resources.Load를 통해 런타임에 ScriptableObject를 로드하려면 반드시 Resources 폴더에 해당 파일이 위치해야 한다.하지만 유지보수와 최적화를 위해 ScriptableObject 데이터베이스를 활용하거나 Unity Addressables를 사용하는 것이 더 나은 대안이다.인벤토.. 더보기 TIL(Today I Learned) - 48 오늘의 TIL (Today I Learned)스킬 시스템 구조 개선SkillManager와 PlayerSkill 간 역할을 명확히 분리하여, SkillManager는 스킬 실행을 총괄하고 PlayerSkill은 스킬 실행 로직을 담당하도록 설계.TriggerSkill을 통해 스킬 타입(Active, Buff, Passive)에 따른 적절한 메서드를 호출.패시브 스킬 동작 방식전투 시작 시 자동으로 발동하며, 쿨다운이 끝나면 다시 발동.buffDuration 동안 효과가 유지되며, 종료 시 원래 상태로 복구.isBuffActive를 활용하여 중복 발동을 방지.유연한 스킬 관리List를 활용하여 스킬 데이터(ScriptableObject) 기반으로 동작.cooldownTimers와 isBuffActive 배.. 더보기 TIL(Today I Learned) - 47 오늘의 TIL (Today I Learned):SkillSO와 ScriptableObject:ScriptableObject는 데이터 중심의 설계에 적합하며, 게임 내 스킬이나 아이템 데이터를 관리하는 데 매우 유용하다.스킬 실행 로직은 SkillSO가 아닌 별도의 매니저 클래스에서 처리하는 것이 더 역할 분리가 잘 된다.스킬 시스템 설계:스킬 쿨다운과 실행 로직을 PlayerSkill에서 관리하고, 실제 효과를 SkillManager로 분리하여 구현하면 유지보수와 확장성이 높아진다.SkillSO는 스킬의 이름, 설명, 쿨다운, 마나 소모량, 데미지 등 데이터를 저장하고, 실행 로직은 포함하지 않는 것이 적합하다.싱글톤 패턴 활용:SkillManager를 싱글톤으로 설계하여 게임 내 어디서든 스킬 실행 로.. 더보기 TIL(Today I Learned) - 46 오늘은 최종 프로젝트를 시작하는 날이었다.프로젝트의 첫걸음으로, 팀원들과 함께 게임 기획에 대해 다양한 이야기를 나누며 방향을 정리했다.처음 통일된 의견은 **방치형 클리커 게임인 "오크 아이돌 키우기"**였다.오크 아이돌 키우기라는 독특한 컨셉을 잡고, 튜터님과 멘토님께 조언을 구했다.그러나 컨셉에 대해 피드백을 받은 결과, 오크 아이돌 키우기의 경우컨셉이 다소 난잡하고 일반적인 포트폴리오에 적합하지 않다는 의견을 들었다.결국, 컨셉을 보다 일반적이고 정돈된 방향으로 수정하기로 결정했다.우리 팀은 더 많은 것을 보여주고, 경쟁력을 갖추기 위해 차별화된 컨셉을 시도했지만,오히려 이런 차별성이 독이 될 수 있다는 중요한 교훈을 얻었다.오늘의 배움:독창적인 컨셉도 중요하지만, 목표와 대상에 맞춘 적합성이 우.. 더보기 TIL(Today I Learned) - 42 📆 오늘의 TIL (Today I Learned)1. 퀵 슬롯 시스템 개선문제 해결:아이템 데이터를 UI 퀵 슬롯과 연결하고, 자동으로 슬롯 UI를 업데이트하도록 시스템을 설계.비어 있는 슬롯 선택 시 장착 해제가 발생하는 문제를 조건문으로 방지.학습:이벤트 구독을 활용하여 장착 상태를 UI에 실시간 반영.Action 이벤트를 활용해 데이터를 동적으로 처리.2. 사운드 매니저 구현Singleton 기반 SoundManager:AudioSource를 활용하여 발사, 장전, 무기 장착 등 상황별 사운드 재생.PlayOneShot과 PlayClipAtPoint를 사용하여 위치 기반 및 일반 사운드 구현.문제 해결:오디오 소스가 누락된 경우 디버깅 로그를 활용해 문제를 빠르게 해결.확장 가능성:각 무기마다 고.. 더보기 이전 1 2 3 4 5 6 다음