본문 바로가기

분류 전체보기136

스파르타 내배캠 Unity 3기 19일차 드디어 유니티로 진입! 이번 개인과제는 Zep을 모방하는 것이다. 역시 유니티는 하면 할 수록 모르는 것들 투성이라는걸 다시 한 번 깨닫게 되는 순간이었다. InputField InputField 는 유니티 내에서 제공해주는 문자열을 입력할 수 있는 UI 이다. 문제는 여기서 내가 입력을 했을 때 어떤 이벤트를 발생 시키고 싶었고 정확힌 내가 적은 문자열이 무엇인지 확인 후, 그에 맞게 이벤트를 발생 시켜야 했다. 그것을 알 수 있는 방법이 다양했는데 내가 선택한 방법은 두가지이다. InputField의 OnEndEdit 활용 InputField 컴포넌트 자체에서 제공해주는 이벤트 가운데 OnEndEdit가 있는데 이것은 Return 또는 Enter 입력시 리스너가 있을 때 호출되는 방식이다. 그럼 호출.. 2024. 1. 18.
스파르타 내배캠 Unity 3기 18일차 땅콩의 꽃은 노란색을 띠며 나비 모양을 하고 있고, 잎겨드랑이에 핀다. 꽃은 2-3개월에 걸쳐 피는데, 해 뜰 무렵에 꽃봉오리가 벌어지고 수정이 아침 나절에 이루어진다. 며칠이 지나면 자루처럼 생긴 씨방자루가 자란다. 씨방자루는 밑을 향해 자라 깊이가 약 3 cm~5 cm인 흙 속까지 밀고 들어간다. 다 자란 씨방자루는 길이가 18 cm 정도이고, 그 끝에는 발달 중인 열매가 들어 있다. 이 끝이 부풀어 올라 땅콩 꼬투리로 익는다. 꼬투리에는 보통 씨가 2개 들어 있다. 그렇다! 땅콩은 식물학적으로 콩류 였다...! 암튼 그렇다 끝! 은 아니고 오늘은 팀과제도 끝났으니 알고리즘 문제를 보도록 하자. 하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 .. 2024. 1. 17.
스파르타 내배캠 Unity 3기 17일차 발표준비는 어려워 어제 세이브로드 구현 후 플레이어의 직업이 정상 출력되지 않는 버그가 있었다. 그 부분을 알아보자. 부모 타입의 객체를 자식 타입으로 관리하기는 힘들다. 왜 위 같은 타이틀을 썻는가... 플레이어를 저장시에 Warrior 로 생성된 객체라도 Player 로 저장되기 때문이다. 그리고 Player 타입으로 생성 되면 문제가 되는점이 다음과 같다. public virtual string GetClassName() { return "잘못된 접근"; } public override string GetClassName() { return "전사"; } 해당 코드는 상태창에서 플레이어의 직업 이름을 가져올 때 쓰이는 코드인데 Warrior 객체는 "전사" 로 출력이 되는데 Load 시에 Playe.. 2024. 1. 16.
스파르타 내배캠 Unity 3기 16일차 오늘은 팀 과제에 세이브 기능을 넣었다. 처음엔 개인 과제에 있는 그대로 넣을까 싶었지만, 마음에 안 드는 코드여서 새로 만들어 보았다. 하지만 Json을 썼다는 거에 이변은 없다. Save & Load Save 시 저장되어야 하는 데이터 플레이어 정보 (기본 수치, 직업, 직업별 스킬) 아이템 리스트 장착 아이템 리스트 저장 기능은 유틸성 클래스이다. 전역으로 사용할 예정이니 static 클래스로 만들었다. internal static class DataManager { private static readonly string? DIRECTORY_NAME = Path.GetDirectoryName(Directory.GetCurrentDirectory()); } 저장할 폴더의 이름인 DIRECTORY_NA.. 2024. 1. 15.
스파르타 내배캠 Unity 3기 15일차 주말! 주말! 주말! 주말! 요새 날짜 감각이 없다... 지만 금요일은 못 참지 ㅋㅋ 오늘은 내가 한게 아니라 팀원분께서 작성하신 코드를 너무 유용하게 썻는데, 쓰다보니 줄이고 줄이고 또 줄이고 싶은 부분이 있어 그 부분을 짚어보도록 하자. 이걸 뭐라 부르는지 모르겠다... 찾아봐도 잘 모르겠다... 리팩토링? 추상화? 용어가 있었던거 같은데... 주 기능은 기존의 중복코드를 하나의 코드로 만들었고 그것을 정적메서드로 만들어 두셨다는 것이다. internal class UI { #region UserInput /// /// 경고문과 함께 사용자에게 입력을 받는 UI를 표시하고, 사용자가 입력한 값을 반환합니다. /// /// 표시할 경고문입니다. 기본값은 빈 문자열입니다. /// 경고문의 성격이 긍정적인.. 2024. 1. 12.
스파르타 내배캠 Unity 3기 14일차 (대충 코드 충돌 티콘) 어제는 Monster 클래스와 IDamagable 클래스를 만들어보았다. 오늘은 Stage 추가를 위해 DungeonInfo 라는 클래스를 만들어 보도록 하자. 스테이지 추가 스테이지 추가 시 가지고 있을 기능 최고 도달층 및 현재 진행 층 최고 도달층 클리어 시, 스테이지 갱신 입장 층에 따라 난이도 상이 스테이지 진행 던전입구 -> 최고층 진행 / 다른 층 진행 (분기점) -> 선택 층 입장 -> 해당 층 클리어 시, (최고층 == 현재층) 이라면 최고층 갱신 난이도 설정 5층 단위로 스폰 개체 수 1 ~ 5마리 랜덤 5층 단위로 레벨, 타입(종류) 증가 스테이지 기능을 총괄할 클래스는 DungeonInfo 라는 이름으로 생성해주자. 단, 해당 클래스는 기록을 관리하며 부가 .. 2024. 1. 11.
스파르타 내배캠 Unity 3기 13일차 오늘은 야식으로 불닭 ㅋ 팀 프로젝트 기간에 들어왔고 내가 맡은 부분은 [전투 시작] 부분이었다. 요구사항을 찬찬히 보니 몬스터가 등장하는 부분이 있었고 기존 개인과제에서는 없었기에 몬스터를 추가하는 부분을 써보기로 했다. Monster Class 몬스터의 정보를 총괄하는 Monster class 를 새로 만들어 보자. 몬스터가 가지고 있어야 하는 정보 이름 레벨 체력 공격력 사망여부 먼저 내부에서 정보를 저장할 private 변수들을 생성해준다. 다만 몇 가지 차이점이 있다. 몬스터가 가지고 있는 정보 중 처음 생성 후, 변하지 않는 변수 [이름, 레벨, 공격력] 이 셋은 readonly 로 선언한다. private readonly string _name; private readonly int _lv;.. 2024. 1. 10.
스파르타 내배캠 Unity 3기 12일차 마구마구 공부하기! 드디어 2번째 팀 프로젝트 주차에 들어왔다! 하지만 오늘의 TIL 주제는 알고리즘이다! 어제 쓴게 3번째 과제였는데 오늘은 2번째 과제를 봐야겠다(역순인 이유는 나도몰루다) https://leetcode.com/problems/flood-fill/description/ Flood Fill - LeetCode Can you solve this real interview question? Flood Fill - An image is represented by an m x n integer grid image where image[i][j] represents the pixel value of the image. You are also given three integers sr, sc, a.. 2024. 1. 9.
스파르타 내배캠 Unity 3기 11일차 피곤하고... 어렵고... 아이고... 오늘은 5주차 알고리즘 과제 중에서 3번 문제였던 최장 증가 부분 수열(LIS) 에 대해 알아보고자 한다. ※ 최장 증가 부분 수열 (Longest Increasing Subsquance) 란? n개의 원소를 가진 배열의 일부분으로 만든 부분 수열 중, 각 원소가 이전 원소보다 크다는 조건을 만족하면서 그 길이가 가장 긴 부분 수열 이라고한다. 예) 배열 { 3, 2, 4, 5, 1, 10, 6, 8 } 있다고 치자. 부분수열 => { 3, 4, 5 }, { 2, 4, 5 }, { 1, 6, 8 }, { 3, 4, 5, 10 } 등등 부분 부분으로 잘라서 수열을 만들 수 있지만 그 중 "증가 하며 가장 긴 수열" 은 { 3, 4, 5, 6, 8 } 또는 { 2, 4.. 2024. 1. 8.