본문 바로가기

분류 전체보기136

[1일 1 구현] UI Base [Rookiss UI_Base를 참고하였음]오늘 구현해볼 것 : UI_Base.cs UI_BaseUI_Base 클래스의 역할은 다음과 같다.모든 UI의 부모 클래스 역할을 한다.사용할 컴포넌트를 캐싱할 수 있다.public class UI_Base : MonoBehaviour{ // To Do // 사용할 컴포넌트들을 캐싱해둘 자료구조 // 컴포넌트 Bind // 컴포넌트 Get } 캐싱해둘 자료구조를 정해야 하는데 UI의 컴포넌트라면 Button, Text, InputField, Image 등등 다양하게 있다.List나 배열로 하기에는 여러 타입의 자료구조를 각각 만들어야 하니 패스. Dictionary 의 value를 UnityEngine.Object[] 로 담으면 같은 컴.. 2024. 5. 13.
[1일 1 구현] UI Manager Rookiss 님의 UIManager를 기반으로 작성📌 구현 이유팀 프로젝트 Null Reference Exception을 만들며 구성했던 UI 구조가 마구잡이로 섞임Rookiss 식으로 만들면 생성/제거 이 두 기능밖에 안 하지만 Active(true/false) 기능까지 넣어서 이도저도 아니게 돼버림Rookiss 식 + [serializefield] 어트리뷰트를 사용하는 드래그 드롭 방식도 씀유저 피드백 중 ESC 키로 이전 UI 또는 Popup 끄기 키를 넣어달라는 요청 해결 못함기왕 따라 쓸 거라면 100% 이해를 하는 게 맞다고 생각내가 원하는 기능으로 커스텀할 수 있도록 📌 구현할 기능UIManager.csUIBase.cs팝업 UI (모바일게임의 이벤트 UI, 알림 팝업 등)연결 UI ([.. 2024. 5. 13.
[1일 1구현] 시작 📌 시작하며 ❔ 왜 1일 1 구현 프로젝트를 시작하는가서비스 중인 대형 게임사들의 게임들을 보며 "저건 어떻게 구현했을까?"를 자주 생각하곤 한다.뇌내망상으로 "이렇게 구현했겠지?" "저건 이렇게 하면 되지 않을까?" 하는 것들도 있지만정말 어려워 보이는 구현들은 상상할 엄두조차 나지 않는 것들도 많다.문제는 생각만 하는 것과 생각조차 하지 않는 것 둘 다 좋지 못하다는 판단을 했다.개발 입문을 시작하면서 1인 개발이나 팀 프로젝트 등에서 기획을 내며 직접 구현을 해보기도 하고 어려운 것들은 참고 영상이나 자료들을 봐가며 만들었다.결과적으로 어느 정도 구현해 본 것들이 생기긴 했지만 가장 근본적인 문제가 해결이 안 된 것 같았다."그래서 정말 내 것이 되었을까?"이 문제를 해결하기 위해 정확히 내가 구.. 2024. 5. 12.
(C#) BFS 📌BFS 너비 우선 탐색시작 정점을 방문한 후 시작 정점에 인접한 모든 정점들을 우선 방문하는 방법이다. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 너비 우선 검색을 적용한다 특징Queue를 이용해 방문할 노드를 예약(Enqueue) 후 선입선출(LIFO) 원칙으로 탐색한다.예약한 노드는 반드시 방문 여부를 검사 해야한다.하지 않았을 때 무한 루프에 빠질 수 있다. 구현 코드class Graph{ private int _nodeCount; private List[] _adj; public Graph(int nodeCount) { _nodeCount = nodeCount; _adj = new List[nodeCount];.. 2024. 5. 12.
(C#) DFS 📌DFS 깊이 우선 탐색그래프/트리 탐색 기법중 하나이다.한 정점(Vertext)에서 연결되어있는 다른 정점으로 갈 때 한 분기의 가장 깊숙한 곳 까지 탐색하고 다시 돌아와 다른 분기를 탐색하는 기법이다. 특징자기 자신을 호출하는 순환 알고리즘 형태를 가지고 있다.어떤 노드를 탐색했는지 검사를 반드시 해야한다.하지 않았을 때 무한 루프에 빠질 수 있다. 구현 코드class Graph{ private int _nodeCount; private List[] _adj; public Graph(int nodeCount) { _nodeCount = nodeCount; _adj = new List[nodeCount]; for (int i = 0; i ().. 2024. 5. 10.
귤 고르기 (C#) 📌문제 설명경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다.예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류가 2, 3, 5로 총 3가지가 되며 이때가 서로 다른 종류가 최소일 때입니다.경화가 한 상자에 담으려는 귤의 개수 k와 귤의 크기를 담은 배열 tangerine이 매개변수로 주어집니다. 경화가 귤 k개를 고를 때 크기가 .. 2024. 5. 9.
Culling (최적화) 📌컬링(Culling)이란?카메라에 보이지 않는 것은 그리지 않는다.1. 프러스텀 컬링 (Frustum Culling)기본적으로 유니티 엔진 자체에서 프러스텀(Frustum) 컬링으로 카메라에 잡히지 않는 물체는 그리지 않아 드로우 콜이 발생하지 않는다.[사진 1] Batches = 15[사진 3] Batches = 134위 예시와 같이 씬 뷰에서 모든 오브젝트들이 다 보이지만 뷰 프러스텀(View Frustum) 내에 들어오지 않은 물체들은 그리지 않아사진1의 Batches가 훨씬 작은 것을 알 수 있다.2. 오클루전 컬링 (Occlusion Culling)하지만 다음 그림과 같이 A 물체 뒤에 가려지는 B 물체는 게임 뷰에서 보이지는 않지만뷰 프러스텀 내에 들어와 있다면 드로우 콜이 발생한다.[사진.. 2024. 5. 9.
멀리 뛰기 (C#) 📌문제 설명효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는(1칸, 1칸, 1칸, 1칸)(1칸, 2칸, 1칸)(1칸, 1칸, 2칸)(2칸, 1칸, 1칸)(2칸, 2칸)의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다.📌제한 사항n은 1 이상, 2000 이하인 정수입니다.📌입출력 예n result4 53 3📌입출력 예 설명입출력 예 #1위에서 설명한 내용과 같습니다.입출력 예 #2(2.. 2024. 5. 9.
예상 대진표 (C#) 📌문제 설명△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다.이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 .. 2024. 5. 9.