분류 전체보기 42

내일배움캠프 31일차 - 인벤토리 아이탬 위치 바꾸기 버그

오늘은 인벤토리를 짜고 슬롯끼리 교체하는 아이템 위치 바꾸는 기능을 만들어보았는데 인벤토리 슬롯 인덱스가 자꾸 이상해지는 버그가 생겼다. 원인을 계속 추적해보니, 인벤토리에 들어가는 아이템을 그리드 레이아웃 그룹으로 인벤토리에 들어가게 구현되어있는데. 이제 내가 드래그로 아이탬을 집었을 때, transform.SetParent(_canvas.transform); // 부모를 canvas로 옮겨서 자유롭게 움직이게 함 로 슬롯을 캔버스의 바로 밑의 자식으로 꺼내어 자유롭게 움직일 수 있도록 하였었다. 그런데 여기서 문제가 캔버스의 자식으로 빼버리니, 그리드 레이아웃 그룹에서 빠지게 되고 다시 드래그가 완료 되었을 때 다시 레이아웃에 넣어주게 되니 인벤토리의 마지막 슬롯으로 들어가게 되었다. trans..

내일배움캠프 30일차 - 구조 설계

1. 프로젝트의 커스텀 Enum 데이터 타입 관리Enum을 활용하면 코드의 가독성이 높아지고, 값의 무결성을 유지할 수 있다. 특히 문자열이나 숫자 값으로 직접 비교하는 방식과 비교했을 때, 실수를 줄이고 유지보수가 쉬워진다. 장점:코드 자동완성을 활용할 수 있어 실수 방지가 가능하다.가독성이 높아지고, 오타로 인한 버그를 방지할 수 있다.데이터 타입이 명확하게 정의되므로 유지보수가 용이하다.단점:변경이 잦은 경우, Enum을 수정해야 하므로 코드 수정이 필요하다.확장이 필요한 경우 기존 Enum을 변경해야 하는 부담이 있다.예제:namespace EnumTypes{ public enum AttackTypes { None, Melee, Range } public enum CardRanks { ..

내일배움캠프 29일차 - 에라토스테네스의 체

소수란?소수는 1과 자기자신만을 약수로 가지고있으므로 2부터 n-1 까지 수로 나눠지면 안되는 성질을 가지고있다.2,3,5,7,11,13,17.... 1. 기본 방법모든경우의 수를 검사하는 방법.O(N)의 시간 복잡도를 가지고있으므로 파라미터값이 커질수록 시간값또한 커지게 된다. bool isPrime(int num) { for(int i = 2;i 2. 에라토스테네스의 체에라토스테네스의 체는 가장 대표적인 소수판별 알고리즘 이며 많은 양의 소수를 가장 빠르고 정확하게 구하는 알고리즘이다. 2부터 시작하여 자기자신을 제외한 나머지약수들을 다 지우며 나가며 결과적으로는 소수만 남게된다. void isPrime(int num) { int[] temp = new int[num + 1]; for(int..

내일배움캠프 28일차 - 프로젝트 초기 설정(매니저)

🎮 매니저(Manager)란?**매니저(Manager)**는 게임 개발에서 특정 시스템이나 기능을 조율하고 관리하는 역할을 수행하는 중앙 제어 클래스입니다.🧭 매니저의 주요 역할역할설명✅ 중앙 조율자여러 개별 객체나 시스템 간의 상호작용 조율📦 데이터 관리시스템의 상태를 추적하고 전달🛠️ 생성/소멸 관리객체의 생성, 소멸, 업데이트 등을 제어 📌 매니저의 역할과 책임✅ 1. 관리의 역할만 수행의존성 관리예: UIManager가 모든 UI의 켜짐/꺼짐 상태를 조율리소스 관리필요한 리소스를 로드/언로드하거나 캐싱이벤트 중계시스템 간 이벤트 전달 및 수신❌ 2. 하지 말아야 할 것들하지 말아야 할 일이유 🚫 직접 기능 구현비즈니스 로직은 해당 객체가 처리해야 함🚫 세부 데이터 처리세부 동작 결정은..

내일배움캠프 27일차 - 백준, 프로그래머스 자동 깃허브 커밋,

백준, 프로그래머스 문제를 풀면 자동으로 깃에 커밋해주는 프로그램이 있다길래 소개 겸 나도 쓸려고 저장 용으로 씁니다. 이름은 "백준허브", 내가 푼 문제가 정답일 시 해당 코드뿐만 아니라 성능과 메모리, 어떤 문제였는지에 대한 정보를 자동으로 커밋해주는 프로그램이다. 먼저 설정 방법을 알아보자 1. 크롬 확장 프로그램을 설치한다. 크롬 웹스토어에 "백준허브"를 검색하고 다운한다.다운 링크는 https://bit.ly/3XR66UE 이다. 2. 깃허브 연동 설치가 완료 된 후 크롬 주소창 우측 퍼즐 모양에서 해당 확장 프로그램을 눌러 Authenticate 버튼을 클릭 하여 연동을 시작한다. 깃허브에 로그인 후, Authorize QasimWani 버튼을 클릭해 연동을 승인한다. 3. 코딩테스트 문제 ..

내일배움캠프 26일차 - 기획 테이블 활용 & IDE

1. 고정형 데이터 vs 변동성 데이터고정형 데이터 (Static Data)게임의 룰, 밸런스, 설정값처럼 변하지 않는 정보외부 파일 또는 ScriptableObject 등으로 관리예시:무기 종류 및 스탯 테이블캐릭터 레벨별 스탯몬스터 출현 정보스테이지 구성 데이터변동성 데이터 (Dynamic/Runtime Data)플레이 중 변경되는 정보저장, 불러오기, 동기화의 대상예시:플레이어의 현재 경험치, 체력, 소지 아이템퀘스트 진행 상태클리어한 스테이지 목록설정값(볼륨, 언어 등)2. 고정형 데이터 관리 방법ScriptableObject 사용[CreateAssetMenu]public class WeaponData : ScriptableObject{ public string id; public in..

내일배움캠프 25일차 - 데이터 드리븐

🎮 데이터 드리븐 개발(Data-Driven Development)이란?데이터 드리븐 개발은 게임의 로직이나 설정을 코드에 직접 하드코딩하지 않고, 외부 데이터 파일(JSON, CSV, ScriptableObject 등)을 통해 정의하고 이를 코드에서 읽어 처리하는 방식입니다.즉, 코드를 수정하지 않고도 데이터만 바꿔서 게임의 기능이나 밸런스를 바꿀 수 있는 구조입니다. ✅ 왜 데이터 드리븐 방식을 사용하는가?빠른 수정 가능코드 수정 없이 밸런스나 콘텐츠를 조정할 수 있어 빠른 테스트와 반복이 가능합니다.기획자 친화적개발자가 아닌 기획자나 디자이너도 데이터를 직접 수정해 테스트할 수 있어 협업 효율이 향상됩니다.하드코딩 지양수많은 조건문과 중복을 줄이고, 유지보수하기 쉬운 간결한 코드를 작성할 수 있습..

내일배움캠프 24일차 - 객체 지향 프로그래밍 OOP

💡 객체지향 프로그래밍 (OOP, Object-Oriented Programming)객체를 중심으로 코드를 구성하여, 복잡한 구조를 단순화하고 유지보수를 용이하게 하는 프로그래밍 패러다임🔍 OOP의 필요성인간은 패턴을 발견하고 활용하려는 존재 2. 요구사항은 항상 변한다예: “근거리/원거리 몬스터 구분해주세요”, “보스도 추가해주세요” 등➡ 데이터를 속성과 행동으로 묶어 관리하면, 변화에 유연하고 유지보수하기 쉬운 코드 작성이 가능해짐 💡 객체란?**속성(데이터)**과 **행동(메서드)**을 가지는 독립적인 단위직관적으로 “우리가 지칭할 수 있는 것들”.🧱 객체지향 프로그래밍의 핵심 개념1. 상속 (Inheritance)기존 클래스(부모)의 기능을 새로운 클래스(자식)가 재사용 및 확장코드..

내일배움캠프 23일차 - Unity 3D 상에서 Plane 생성 시 위로 이동하면 안보이는 이슈

오늘은 정말 미스테리 한 이슈를 하나 발견해서 정리를 해볼 까 한다. 내가 유니티 3D 환경에서 Plane으로 오브젝트를 만들고 그 오브젝트를 포인트 사이를 왔다 갔다하는 로직을 만들어보았는데,이때 플레인이 위아래로 움직일 시 특정 높이 이상으로 올라가면 보이지 않는 문제가 있었다. 위의 사진들을 비교하면 밑에 있을 땐 보이지만 조금만 올라가도 그림자만 보이고 보이지 않는 문제가 생겼다.단순이 게임 창에서 올라간 게 아니라 일정 높이 이상으로 올라가면 게임 창에서 보이지 않게 되는 문제다. 구글링을 해봐도 나오는 내용도 없어서 튜터님께 질문하러 갔는데 유니티는 3D 상에서 평면 도형은 한 쪽만 렌더링 하는 문제라고 하신다.이를 해결 하기 위해서는 쉐이더를 직접 만들어서 Cull off 시켜 주면 된다고..

내일배움캠프 22일차 - 자료구조 (트리)

오늘은 많이 헷갈리던 트리 자료구조에 대해서 한 번 싹 정리하는 시간을 가져보도록 하겠습니다. 트리(Tree) 트리는 1:1로 대응하는 선형적인 구조와는 다리 1:N, N:N 대응이 가능한 비선형적인 자료구조를 가지고있다.계층적인 구조를 갖고있고, 사이클이 없는 그래프의 일종이다. 먼저 트리의 그림부터 보자. 트리는 최상위에 있는 부모 즉, 루트 노드를 시작하여 간선(Edge)을 연결해 여러 개의 자식노드를 가지는 구조이다.부모노드는 0개 이상의 자식노드들을 가지고 있을 수도 있고 그 자식노드에 자식노드들을 또 가질 수도 있다.하지만 자식노드는 부모 노드를 2개 이상 연결할 수 없으며 무조건 최대 한 개의 부모의 노드와 연결할 수 있다. 다음은 트리에서 자주 사용 되는 용어들이다. 루트(Root) : 트..