본문 바로가기

유니티

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) - 45 GPT도 쓰지말자........ 더보기
TIL(Today I Learned) - 44 📚 오늘의 TILUnity의 SoundManager 구조 설계BGM과 효과음을 분리하여 AudioSource 두 개를 활용하는 방식으로 구현.PlayBackgroundMusic 메서드를 사용해 씬 전환 시 자동으로 BGM을 변경.PlaySound로 버튼 클릭이나 아이템 획득 효과음을 관리.버튼 클릭 효과음 구현 방법UIButtonSFX 스크립트를 각 버튼에 추가하여 클릭 이벤트마다 효과음 재생.SoundManager.Instance.PlaySound를 호출해 버튼별 효과음을 독립적으로 설정 가능.스나이퍼 엘리트 스타일 인게임 BGM긴장감을 조성하는 스텔스 음악과 전투 상황에서 역동성을 더하는 음악이 중요.드론 스타일의 저음 기반 음악과 오케스트라 타악기, 현악기의 조합이 효과적.Unity에서 TIL 적.. 더보기
TIL(Today I Learned) - 43 오늘 배운 것 (TIL)UI 미니맵 삼각형 방향 표시삼각형(시야 표시)의 Pivot 설정이 UI 회전과 연계되어 중요하며, Pivot을 (0.5, 0.0)으로 설정하여 꼭짓점이 플레이어 중심에 위치하도록 구현.삼각형의 회전은 Z축 회전을 조정하여 플레이어의 바라보는 방향에 맞추는 것이 핵심.Pivot 문제 해결Pivot 설정은 Unity Editor에서 변경하거나, 코드에서 강제로 설정.잘못된 Pivot 값은 회전 계산에 영향을 미쳐 삼각형이 플레이어와 어긋나는 원인이 됨.UI 좌표 변환플레이어 월드 좌표를 미니맵 좌표로 변환할 때, 비율 계산이 정확해야 UI가 맵 크기와 일치.특히 맵의 비율과 크기를 정확히 고려해야 이상 없이 동작.디버깅의 중요성문제 발생 시, Debug.Log()를 활용해 좌표, 회.. 더보기