🔧 SpawnManager 리팩토링 및 역할 확장
❓ 의문점
- SpawnManager가 오브젝트 풀만 관리하면 되는가?
- 씬 전환 시 프리팹 참조를 잃었을 때 다시 로드해야 하는가?
✅ 해결점
- 기존 역할에 "스폰 위치 지정" 기능을 추가하면서 더 강력한 SpawnManager로 확장 가능.
- 씬 전환 후 ScriptableObject의 참조는 유지되지만, 해당 프리팹은 로딩 상태에 따라 풀/딕셔너리에 재세팅 필요.
💡 예시
csharp
복사편집
// Init 시 매번 prefab 재세팅 ItemData data = ResourceManager.Instance.GetResource<ItemData>(key); if (data != null) prefabs[key] = data.prefab;
🌗 낮/밤 사이클에서 빛 오브젝트 전환
❓ 의문점
- Light.intensity로 오브젝트를 SetActive() 하면 왜 낮/밤 빛이 동시에 켜지는가?
✅ 해결점
- float 비교 (== 0.15f)는 오차 때문에 불안정.
- 명확한 낮/밤 시간 구간 (time) 기준으로 켜고 끄는 것이 더 안정적.
💡 예시
csharp
복사편집
bool isDayTime = time >= 0.25f && time <= 0.75f; sun.SetActive(isDayTime); moon.SetActive(!isDayTime);
🧠 Input System - 숫자 키 1~7 처리
❓ 의문점
- Input System에서 숫자 키를 누르면 어떤 값을 받는가?
- ReadValue<int>() - 1 방식으로 0~6 인덱스를 정확히 받을 수 있는가?
✅ 해결점
- Input System에서는 각 키에 별도 액션을 바인딩하거나
- Key.1 ~ Key.7을 수동으로 매핑해서 처리해야 정확함.
💡 예시
csharp
복사편집
if (Keyboard.current.digit1Key.wasPressedThisFrame) UseQuickSlot(0); // ... 반복
📦 인벤토리 ↔ 퀵슬롯 간 아이템 이동
❓ 의문점
- ItemSlot을 참조형으로 넘기면, 퀵슬롯 수량이 바뀌었을 때 인벤토리도 같이 바뀌지 않나?
✅ 해결점
- 참조형이라면 당연히 연결됨.
- 깊은 복사를 위해 new ItemSlot(otherSlot) 같은 복사 생성자를 구현해야 안전.
💡 예시
csharp
복사편집
public ItemSlot(ItemSlot other) { this.item = other.item; this.count = other.count; }
🧭 NavMesh 랜덤 위치 지정 함수
❓ 의문점
- NavMesh.SamplePosition()이 실패하는 경우가 있는가?
- 왜 항상 범위 내에서 결과가 나오지 않을까?
✅ 해결점
- 샘플링 범위 내 지형이 없다면 실패함.
- 반복 재시도 + range 조정으로 보완 가능.
💡 예시
csharp
복사편집
for (int i = 0; i < 10; i++) { if (NavMesh.SamplePosition(...)) return hit.position; } Debug.LogWarning("유효한 위치를 찾지 못했습니다.");
⏳ 날짜 카운트 방식
❓ 의문점
- time = (time + rate * deltaTime) % 1 구조에서 언제 날짜를 증가시켜야 할까?
✅ 해결점
- prevTime > time인 순간은 0을 지나간 시점, 즉 하루가 지난 것으로 판단 가능.
💡 예시
csharp
복사편집
if (time < prevTime) ++dayCount;
🔚 정리
- 단순 기능에서 역할을 확장할 땐 모듈화와 책임 분리가 핵심
- Unity의 float 기반 값 비교는 절대 == 하지 말 것
- Input System의 유연성은 높지만, 복잡한 키 매핑은 명시적으로 처리해야 확실
- 데이터 구조가 참조형일 땐, 상태 공유에 주의하고 필요시 깊은 복사 고려
- NavMesh나 시간 기반 계산 등은 실패 가능성에 대한 대비 로직을 항상 포함
'[내일배움캠프 Unity 9기]' 카테고리의 다른 글
| 06/05 FSM + BT / 개인 과제 FSM 작성하기 (2) | 2025.06.05 |
|---|---|
| 06/04 TIL 두트윈(feat. 메서드 체이닝) (1) | 2025.06.04 |
| 05/29 인벤토리 시스템 구조 개선 및 버그 수정 (0) | 2025.05.29 |
| 05/28 TIL Unity 매니저 싱글톤 설계 및 Resources.Load 문제 디버깅 (0) | 2025.05.28 |
| 05/27 TIL 오브젝트 풀에 관한 고찰 (0) | 2025.05.27 |