전체 글 45

[내일배움캠프] 기능 명세서, 마일 스톤 및 설계 결정

1. 기능 명세서 작성핵심 기능스킬 트리, 스킬 해금/장착, 스킬 상태 관리 세부 기능플레이어: 레벨업에 따른 스킬 포인트 투자, 전투 UI에서 장착/해제펫/NPC: 친밀도·레벨별 자동 해금, 전용 스킬 순서 관리몬스터: 고정 스킬 데이터(해금 없음)결과물: 위 구조를 표 형태로 정리하여, 각 객체가 가져야 할 데이터와 동작을 명확히 정의 2. 마일스톤 계획단계주요 작업기한기능 명세서 확정 & ERD 작성7/4 (완료)ScriptableObject 클래스 설계 및 구현7/7런타임 상태 관리 시스템(Controller) 구현7/8UI(스킬트리/스킬창) 연동 및 테스트7/9밸런스 튜닝 & 버그 수정7/10 ~ 11 3. 스킬 설계 결정ScriptableObject(SO) vs 상태 분리SO: ID, 이..

Unity 2025.07.04

[내일배움캠프] 스킬 트리 전면 리빌드

📌 오늘 한 일데이터 리셋: 기존 스킬 로직 전부 삭제 -> SO 데이터 재 생성전투를 위한 필드도 SO에 병합함구조 테스트: 루트에서 뻗어나가는 등급별 노드를 런타임에 계산하게 하여 생성하는 식을 해봄.UI 기본 연결 및 튜터님 피드백 받기 📌 어제 설계 대비 달라진 점 1. 정적 + 동적 하이브리드 구조 채택 완전 데이터 기반 -> 초급만 수작업 + 나머지는 코드 생성 으로 방향 확정. 2. UI 한계 확인원형 레이아웃 컴포넌트 대신 각도 - 벡터 수식으로 직접 배치하는 편이 제어가 쉬움.3. 스킬 관계 표현 방법 변경NextNodes 배열을 직접 Drag & Drop -> 동적 생성 시 List 자동 채우기로 수정 예정. 📌 오늘 새로 배운 점 / 느낀 점 백지에서 다시 그리기는게 때..

Unity 2025.07.03

[내일배움캠프] Unity 스킬 트리 1차 프로토타입

📌 오늘 한 일스킬 데이터: SO 작성, 타입/ 티어 정의열거형: enum으로 타입과 티어 분류라이브러리: 모든 스킬을 조회할 라이브러리 싱글톤 (전역)플레이어 컨트롤러: 포인트, 해금, 레벨업 로직 초안 (비용/확률 등 공식 포함)이펙트: 해금 파티클 해보고싶은데, 이건 좀 더 나중에 자세히 구현해볼예정! 📌 어제 설계 대비 달라진 점 1. 데이터 기반 구조를 현실화설계 단계에서 생각했던 SO 구조를 실제 코드로 옮겨, 인스펙터에서 수치만 조정하면 되도록 했다. 2. 플레이어 쪽 로직 분리스킬 포인트와 해금 상태를 전담하는 PlayerSkillController 를 별도 컴포넌트로 빼서 UI랑 전투 시스템과의 연결도 느슨하게 해보려고 했다.특정 레벨 이상은 성공 확률이 점진적으로 감소하도록 함..

Unity 2025.07.02

[내일배움캠프] 스킬 트리 구상해보기.. 클래스 설계에 대한 고민

📌 오늘 한 일UI/UX 전담 역할로서 스킬트리 화면의 전반적 흐름과 구조를 고민스킬 데이터 모델 구조 설계 시나리오 작성. 타입(화염, 얼음, 자연, 물리) 별 분류와 단계(초급, 중급, 상급) 구분 정의UI 상에서 스킬트리를 중앙 → 바깥으로 확장되는 형태로 배치스킬 해금 흐름(포인트 사용 → 해금 → 다음 단계 해금 가능) 설계 구상 📌 고민한 내용스킬 데이터를 어떻게 저장하고 관리할지(ScriptableObject 모델 설계)플레이어 스킬 포인트, 해금 상태를 어디서 관리할지(PlayerSkillController 등)UI 상에서 스킬 노드 배치를 어떻게 구현할지(원형 레이아웃, 연결선, 락/언락 상태)상세 설명, 포인트 소모량, 해금 가능 여부 등을 어떻게 표현할지유지보수성 높은 코드 구..

Unity 2025.07.01

[내일배움캠프] Unity 에디터 스크립트 - 아이템 일괄 추가 버튼 만들기

오늘은 Unity의 커스텀 에디터 창에서 원래는 하나씩만 추가하던 아이템을 버튼 한 번으로 전부 추가하도록 스크립트를 수정해봤습니다.기존 기능에디터 창에서 아이템 드롭다운 목록 중 하나를 선택“Add Item” 버튼을 누르면 그 하나만 인벤토리에 추가csharp복사편집var names = _items.Select(x => x.ItemName).ToArray(); _selectedIndex = EditorGUILayout.Popup("테스트 아이템", _selectedIndex, names); var selectedItem = _items[_selectedIndex]; _inventory.AddItem(selectedItem, 1); 문제점한 번에 하나씩만 추가 가능해서, 테스트할 때 여러 아이템을 넣으려..

Unity 2025.06.30

[내일배움캠프] 빈 딕셔너리 검사~!

발생 사항 - 개표 기능 구현 중, 코루틴에서 finalCounts.Values.Max() 호출시 finalCounts가 비어있으면, InvalidOperationException이 발생하며 개표 코루틴이 멈춤.발생 원인 - 투표 결과가 전송되지 않거나, 한 표도 기록 되지 않아 finalCounts 딕셔너리가 빈 상태로 코루틴이 실행되어 .Max()가 이를 처리하지 못하여 예외가 발생.해결 방안 - ShowBallotAnimation(~) 직후, 개표 코루틴 시작부분에 빈 딕셔너리 검사를 추가해 표가 없을 때는 초기에 데이터가 비어있는 지 먼저 검사한 뒤 처리할 필요가 없으면, yield break; 로 즉시 반환해서 건너뛰도록 함.

Unity 2025.06.18

[내일배움캠프] C# 튜플(Tuple) 개념 정리 / Inventory 예제

✅ 튜플이란?튜플(Tuple)은 여러 개의 값을 하나의 묶음으로 반환하거나 전달할 수 있게 해주는 자료형입니다.(string, int) example = ("이름", 10);이렇게 하면 "이름"과 10을 하나의 데이터처럼 사용할 수 있어요.C# 7.0 이상부터는 이름 붙이기도 가능해서 가독성이 좋아집니다.(string name, int level) player = ("오센치", 10);Console.WriteLine(player.name); // 오센치🧪 Unity에서 직접 사용한 예제: Inventory 클래스public IEnumerable Items => items.Select(pair => (pair.Key, pair.Value));items는 Dictionary입니다.Select에서 각 ..

C# 문법 2025.06.09

[내일배움캠프] 유니티에서 CSV 파일 활용방법 / 데이터 관리 / ScriptableObject와의 차이점

전부터 코드짜면서 늘 "아.. 이거 엑셀로 그냥 목록 적어서 못갖다 놓나..?"라는 생각을 했었다.근데 진짜 그 방식이 있다고 들었었다.그래서 빨리 그 방식을 배워서 써보고 싶었다.일단 충분히 이해를 먼저 하고 차근차근 사용해보려고한다. 엑셀파일은 CSV로 저장하여 불러오는 것인데,유니티에서 CSV파일을 활용하는 것은 데이터 관리를 효율적으로 할 수 있는 방법이라고 한다.또한 아이템, 능력치, 스테이지 등 반복적으로 다뤄야하는 정보를 하드코딩 하지 않고 관리할 수 있다. 그런데 아직 직접 해본 적이 없어서 어려웠고, 튜터님께 여쭤보았다. 그런데 그렇게 어려운 것도 아니고, 별고 없다고 하셨다.코드도 생각보다 간단해서 차근차근 해보려고한다. 📁 Unity : 엑셀 CSV파일 불러오기 1. CSV: C..

Unity 2025.06.04

[내일배움캠프] Rigidbody와 Constraints

🧠 Rigidbody란?Rigidbody는 Unity에서 물리 효과를 적용하고 싶을 때 사용하는 컴포넌트입니다.이를 통해 중력의 영향, 충돌 반응, 물리적 힘 등을 게임 오브젝트에 적용할 수 있습니다.예를 들어, 박스를 실제로 밀거나 떨어뜨리게 하려면 Rigidbody가 필요합니다. 🔒 Rigidbody Constraints란?Constraints는 Rigidbody에 물리적으로 움직일 수 있는 방향(축)을 제한하는 기능입니다.예를 들어, 회전은 막고 싶고 이동만 가능하게 하고 싶을 때 사용됩니다._rigidbody.constraints = RigidbodyConstraints.FreezeRotation;위 코드는 회전을 막고 이동만 가능하게 설정하는 예시입니다. 📌 예시: RotCube..

Unity 2025.05.28

[내일배움캠프] FSM 구조와 Interface 활용

이번에는 Unity에서 퍼즐 게임을 만들면서 FSM 패턴과 Interface를 활용해봤습니다.어려워 보였지만 직접 구현해보니 생각보다 재미있고 유용했습니다! 🎯 FSM이란?FSM(Finite State Machine)은 "정해진 상태들"이 있고, 상황에 따라 상태가 바뀌는 구조를 말합니다.예를 들어, 퍼즐의 상태가 시작 전 → 진행 중 → 해결됨 이런 식으로 변하는 걸 의미해요.각 상태마다 실행할 행동이 정해져 있어서, 상태에 따라 다르게 작동합니다. 🧩 퍼즐 시스템에 FSM 적용하기퍼즐에는 아래처럼 상태를 표현하는 enum을 사용했어요:public enum PuzzleState { None, Active, Failed, Solved}퍼즐의 상황이 바뀌면 이 상태도 함께 바뀌고..

Unity 2025.05.27