분류 전체보기 33

2025.07.10 14주차 목요일

1. 싱글톤 NavigationManager 구조public class NavigationManager : MonoBehaviour{ public static NavigationManager Instance { get; private set; } void Awake() { if (Instance == null) Instance = this; else Destroy(gameObject); } // … 이하 네비게이션 로직 …}인게임 어디서나 NavigationManager.Instance 호출로 접근 가능중복 생성 방지2. 화살표(Arrow) vs 메시지(Message) 모드 전환enum Mode { None, Arrow, Message }Mode _mo..

카테고리 없음 2025.07.10

2025.07.04 13주차 금요일

1. 구조물 내구도 시스템 구현Durability.csmaxDurability, currentDurability로 내구도 관리public void ApplyDamage(float amount) 메서드로 외부에서 내구도 차감내구도 ≤ 0일 때 transform.root.gameObject 전체 파괴2. 토네이도(TornadoController)와 충돌 처리SphereCollider(isTrigger=true) + Rigidbody(kinematic) 조합으로 트리거 이벤트 발생OnTriggerEnter → 진입 순간 1프레임 데미지OnTriggerStay → 매 프레임 damagePerSecond * Time.deltaTime 지속 데미지OnTriggerExit → 이탈 시점 로그(또는 추가 이벤트)3. ..

카테고리 없음 2025.07.04

2025.07.03 13주차 목요일

1. EquipmentManager 리팩토링TryEquip / TryUnequip이미 장착된 모델이 있으면 자동으로 TryUnequip() 후 교체하도록 처리CategoryWithPrefab 를 통해 ID 기반 매핑 대신, EquipmentItem SO 의 equippedPrefab 을 직접 참조하여 InstantiatePrefabReference 컴포넌트런타임 및 에디터 환경 구분 없이, 인스턴스화된 모델에 원본 프리팹 정보(originalPrefab)를 저장변경 전var accessor = World.GetReadOnlyAccessor(EquipableData.ID);accessor.TryGetValue(peek.ID, out var prefab);변경 후EquipmentItem SO 에 equipp..

카테고리 없음 2025.07.03

2025.07.02 13주차 수요일

1. 문제 발견DefaultInventory.Start() → InsertPossible 또는 RemainderIfInserted 호출 시 NullReferenceException 발생오류가 ItemSlotWithProcessor 내부의 insertionProcessors 리스트 중 null 요소를 건드릴 때 터짐콘솔 로그로 확인해 보니, ConstraintCollection.Constraints 의 0번 인덱스에 빈(삭제되지 않은) 슬롯(null)이 남아 있었음2. 디버깅 과정InitSlot()에 Debug.Log 추가ConstraintCollection.Constraints 리스트 길이와 각 요소 타입(또는 null)을 출력로그 결과 Constraints[0] = NULL Constraints[1]..

카테고리 없음 2025.07.02

2025.07.01 13주차 화요일

1. EquipmentManager + 커맨드 패턴 구조화추상화 계층 도입EquipmentManager 추상 클래스 정의IssueCommand(ICommand) 추상 메서드로 입력 커맨드를 분리장착/해제 로직TryEquip(ItemStack stack) / TryUnequip() 메서드로 실제 장착·해제 처리구현체PlayerEquipmentManager 서브클래스 작성EquipCommand / UnequipCommand 를 받아 내부에서 TryEquip·TryUnequip 호출처리 완료 후 command.Complete() 호출로 BaseCommand 파이널라이저 에러 해소2. UI 슬롯 드래그·드롭 비활성화핫바 슬롯 Prefab(Slot_Equip)붙어 있던 TransferableItemSlot 컴포넌..

카테고리 없음 2025.07.01

2025.06.30 13주차 월요일

1. 오늘 한 작업AudioManager 통합ThirdPersonCommandablePlayer 스크립트에 발소리 SFX 호출 기능 추가AudioManager : MonoSingleton 패턴 활용, 씬에 배치된 AudioManager 인스턴스와 연동SoundLibSO 에서 정의한 키(Walking, Running)를 PlayOneShotSFX로 전달하여 발소리 재생 확인asmdef(Assembly Definition) 설정Polyperfect 패키지의 Polyperfect.Crafting.Demo.asmdef에서 Sounds(AudioManager) 어셈블리 참조 추가MonoSingleton와 SoundLibSO 타입이 포함된 Sounds.asmdef 생성 및 참조 설정Demo 어셈블리에서 기본 Ass..

카테고리 없음 2025.06.30

2025.06.25 12주차 수요일

1. UGUIItemTransfer 예외 해결오류 메시지Exception: There must be a UGUIItemTransfer in the scene to leverage its capabilities 원인: UGUIItemTransferListener가 UGUIItemTransfer.Instance를 바로 참조하려다 씬에 없으니 Assert 터짐해결:씬에 UGUIItemTransfer 컴포넌트를 가진 빈 GameObject 추가UI 쪽 스크립트에서 AutoAttachToSlot 플래그를 끄거나, 따로 슬롯이 필요 없는 UI에는 TryGetComponent 분기 처리void Start() { if (!FindObjectOfType()) { Debug.LogWarning("UGUI..

카테고리 없음 2025.06.26

2025.06.25 12주차 수요일

1. PolyPerfect Ultimate Crafting System 구조 분석Quantity & RuntimeIDQuantity struct로 수량 타입 래핑, 암묵적 변환 지원RuntimeID struct로 항목 고유 ID 관리, 에디터/런타임에서 자동 할당SO( ScriptableObject ) 구조PolyObject, BaseObjectWithID를 통한 공통 메타데이터/ID 관리 베이스 클래스BaseCategoryObject로 카테고리별 멤버 그룹화 & 에디터 확장BaseItemObject를 이용한 간단 아이템 SOPathLocatorObject 유틸로 에셋 폴더 경로 동적 조회2. 유틸 및 에디터 확장PolyMono & UnparenterPolyMono로 __Usage 문서화 + 인스펙터 강..

카테고리 없음 2025.06.25

2025.06.16 11주차 월요일

주요 구현 내용 요약StatusData에 OnValidate 구현인스펙터에서 curValue/maxValue 변경 시 즉시 onUIChanged 호출PlayerStatus → BattleUIController → TopUI 이벤트 바인딩 정리StatusData.onUIChanged 직접 등록 vs BattleUIController를 통한 간접 등록UnderUI와 TopUI의 자원∙체력∙EXP 바 실시간 업데이트UnderUI: health.onUIChanged += UpdateHealthBarTopUI: Update()에서 매 프레임 playerStatus 참조로 동기화TopUI에 PlayerStatus 참조 추가[SerializeField] private PlayerStatus playerStatus;p..

카테고리 없음 2025.06.16

2025.06.13 10주차 금요일

주요 구현 내용 요약1. 싱글톤 패턴 리팩토링 (MonoSingleTon상속)2. 싱글톤이 필요한 컴포넌트와 그렇지않은 컴포넌트 명확히 구분3. 코드 구조,주석,region 활용으로 가동성 강화 1. 싱글톤 패턴 리팩토링 (MonoSingleTon상속)기존에 직접적으로 public static EquipManager Instance;를 두고 Awake에서 수동 할당하는 방식에서,MonoSingleton 패턴을 상속하여 더욱 안전하고 일관된 싱글톤 구조로 리팩토링했다.이 과정에서 Instance 직접 할당, 중복 생성/파괴 문제를 MonoSingleton에서 자동으로 관리하게 되어싱글톤 관련 버그 가능성이 줄어들었고, 코드도 더 간결해졌다.씬에 없는 경우 자동 생성, DontDestroyOnLoad, 어플..

카테고리 없음 2025.06.13