개발의 시작 TIL(Today I Learned) 85

게임 개발 5일차 - Google Sheets 데이터를 Unity로 가져와 ScriptableObject로 저장하기

1. Google Sheets API 설정Google Cloud Console에서 프로젝트를 만들고, Google Sheets API와 Google Drive API를 활성화한다.서비스 계정을 생성하고 API 키를 발급받는다.스프레드시트 공유: 서비스 계정 이메일을 스프레드시트에 "편집자"로 추가한다.2. Google Sheets API 호출UnityWebRequest를 사용하여 Google Sheets API에서 데이터를 받아온다.API 호출 URL 형식:https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range}?key={API_KEY}3. JSON 데이터 파싱SimpleJSON 라이브러리를 사용하여 JSON 데이터를 파싱한..

개인프로젝트 기획 3일차

오늘의 고민 - 퀴즈 문제를 보여줄때 어떻게 하면 속도감이 느껴질까? 퀴즈 문제를 어떤식으로 보여줄지 고민을 하는 시간을 가졌습니다타자연습을 레퍼런스로 하고있는 만큼 퀴즈를 보여주는 방식이 속도감있는방식이었으면 좋겠다는생각을 했습니다그래야 퀴즈를 맞추는 속도가 빨라질수록 그 속도에 맞는 느낌이 날수있을것 같았습니다.게임에 여러기능들이 더 있겠지만 기본적으로 UI를 가지고 만들어내는 게임이다 보니 유저들에게 보여지는 방식이 중요하게 느껴졌습니다.후보 1. Scroll Rect + Mask 사용방법Canvas 안에 Panel을 만들고, Scroll Rect 컴포넌트를 추가.Mask 또는 Rect Mask 2D를 추가해서 영역을 제한.문제 목록을 Vertical Layout Group + Content Siz..

개인 프로젝트 기획 2일

게임 기획 - 2-  (기획 정리)기존 기획에서 레퍼런스 게임으로 사용된것은 "크누" , "뿌요뿌요" , "한컴 타자연습"입니다이 게임들은 예전에 하던 단순한 게임들을 점수 랭킹 시스템을 이용해서 다른 유저들과 자신의 점수를 비교하는것으로 게임성을 이끌어내고 있습니다. 비슷한 맥락으로 카카오게임에서 제작한 애니팡을 들수 있습니다. 누구나 알 수있는 익숙한 게임 룰과 다른사람과의 경쟁심리를 부추기는 점수 시스템이 "애니팡"이 유저들에게 매력적인 게임이 된 이유라고 생각되었습니다. 모바일로 하는 한컴 타자연습   (현 세대 자주 사용되는 플랫폼에 맞추어 수정)어렸을때 한컴 타자연습으로 타자 실력을 친구들과 겨루었던 기억이 있습니다. 요즘세대는 컴퓨터보다 스마트폰 이용빈도가 더 높고 스마트폰으로 타자치는 것이..

개인 프로젝트 기획 1일

개인 프로젝트 기획타이틀: 미정컨셉: 퀴즈를 해결하는것으로 점수를 얻는 보드게임모바일레퍼런스 : 크누 , 뿌요뿌요 , 한컴 타자연습 게임게임 구성UI로 이루어진 창에 문제를 출력주어진 입력창에 답을 입력정답일 경우 맞힌 문제의 수가 상승 후 기록오답일 경우 다음 문제로 넘어가되 맞힌 수는 상승하지 않는다게임에는 정해진 시간이 존재하고 그 시간 동안 주어진 문제를 최대한 맟혀서 점수를 올려야한다 한 사이클 이후 추가 할수 있는 부분문제 구성을 변경( 기존의 정답 입력 방식에서 클릭이나 터치 형식으로 변경해서 다른 모드 만들기)문제 종류 추가 (일반상식, 위인문제, 역사문제, 속담문제, 수도문제) / 문제에 따라 UI 변경 고려타임아웃 시간  감소시켜서 난이도 올리기기록보드 기능을 만들어서 랭킹 시스템 만들..

커스텀 툴의 UIManager 코드 분석 및 제작 - 1

만들고자 하는 기능UI의 생성과 동시에 각각 개인적인 캔버스를 달아준다UI의 쓰임새마다 분류를 한다 (상시 출력이 되는지, 잠깐 출력되고 사라지는지)UI의 활성과 비활성 매서드를 분리해서 차후 추가적인 기능을 만들 수 있게 한다UI의 전체 비활성과 만들어진 순서의 역순으로 비활성하는 매서드를 제작하여 키를 부여할수 있게 만들어준다추가 계획적인 기능프로젝트의 기능을 추가하고 시험 할때 기능에 버튼을 만들어 시험하는데 이 부분을 간단하게 만들어 볼 예정개발 공부를 하고 간단한 프로젝트들을 진행하면서 반복 제작하는 UI의 기능들이 있는데 간단하게 추가가 가능하게 할 예정(만들고자 하는 기능을 다 만들고 추가 해볼 기능이지만 계속 구상을 해볼생각입니다) 현재 진행 사항UI의 생성과 동시에 각각 개인적인 캔버스를..

유니티 커스텀 에디터 툴 제작 1 - 3 (필요 기능 추가)

기존 커스텀 툴에 필요한 기능 추가 방어코드 필요스크립트 이름이 작성되지 않았을때 기존 유니티 오류처럼 메세지가 출력 되기 때문에 잘 모르면 알기 힘들것 같다는 생각 하면서 방어코드와 오류 팝업에 대한 필요성을 느꼈습니다오류 팝업 출력하는  경우스크립트 이름이 작성 안 되었을때 (이름이 작성되지 않았다는 오류 팝업 출력)저장 경로 설정이 잘못 되었을때 (경로가 잘못 설정 되었다는 오류 팝업 출력)스크립트 이름이 중복 되었을때 (중복된 이름이 작성되었다는 오류 팝업 출력)오류 팝업 출력시 return을 걸어주어서 잘못된 생성이 안되게 막아주었습니다. 폴더링에 대한 편의성 추가처음 스크립트 생성시 해당 저장경로에 Manager이라는 이름의 폴더를 생성 후 이후 생성되는 Manager 스크립트는 이 폴더 안에..

유니티 커스텀 에디터 툴 제작 1 - 2

유니티 커스텀 에디터 툴 (매니저 스크립트 생성)본격적으로 커스텀 에디터를 만들기 전에 어떤것 부터 만들지 고민이 되었습니다.그러다  조건을 생각해서 그 조건에 부합되는것을 만들기로 했습니다어디서나 많이 사용하는가?이 조건을 생각해봤을때 공통적으로 많이 작성되는건 매니저스크립트라고 생각되었습니다. 코드 설명우선 이전과 달라진 점을 먼저 설명하자면 스크립트 이름을 담을 수있는 필드와 저장 경로를 담는 필드를 추가하여 사용자가 스크립트 이름과 저장위치를 설정할수 있게 해주었습니다. 저장경로는 에셋폴더를 기본값을 설정하여 저장경로가 null이 뜨지 않도록 해주었습니다. 매니저스크립트는 여러가지 역할이 될 수도 있지만 자주 사용되는 역할을 enum으로 설정하여 고를수 있도록 했습니다. 기본값으로는 별다른 특징을..

유니티 커스텀 에디터 툴 제작 1 - 1

CustomEditor 제작이 필요한 이유 커스텀 에디터 툴은 인스펙터의 스크립트에 어떤 버튼을 누르면 자동으로 에셋들을 로드해준다거나, 자동으로 맵을 생성 해준다거나 등등 잘 활용한다면 개발하는데 굉장한 편의성을 갖출 수 있습니다. 이번에 내일 배움 캠프에서 프로젝트를 하면서 프로젝트에 새로운 기능을 공부해서 추가해야 할 부분도 있지만기존에 배웠던 기능을 반복해서 작성해야 할 부분도 많다는것을 느끼게 되었습니다.그래서  커스텀 에디터 툴을 만들어서 반복적으로 사용하고 있는 부분을 작성하는 시간을 줄이고 앞으로의 개발에서 편의성을 부여하고자 합니다.CustomEditor를 만들기 전에 알아야 하는 부분유니티 에디터 코드가 동작하는 레벨에 대해 알 필요가 있다우리가 흔히 사용하는 C# 스크립트들은 모든 레..

최종 프로젝트에서 Dictionary를 사용하며 ...

C#의 딕셔너리 (Dictionary) 개념과 사용법딕셔너리란?딕셔너리는 C#의 System.Collections.Generic 네임스페이스에 포함된 자료 구조 중 하나입니다. 키와 값으로 구성되어 있으며, 키를 사용하여 값을 빠르게 검색, 추가 및 제거할 수 있습니다. 각 키는 고유하며, 동일한 키로 여러 값을 저장할 수 없습니다. 딕셔너리는 해시 테이블을 기반으로 하여 매우 빠른 검색 속도를 제공합니다.딕셔너리의 주요 특징:빠른 검색 속도: O(1) 시간 복잡도로 값을 검색할 수 있습니다.키-값 쌍: 키를 통해 값에 접근할 수 있습니다.고유한 키: 각 키는 고유하며, 동일한 키로 중복 값을 저장할 수 없습니다.오늘의 내용오늘은  딕셔너리를 사용하는 방법에 대해 좀 더 알아보는 시간을 가졌고, 포스트 ..

오늘의 작업 - 시네머신 적용 및 강의 듣기

오늘의 작업 요약:작업 내용: 오늘은 기존의 메인 카메라 기능을 시네머신 카메라로 수정하여 적용했습니다. 시네머신을 사용하여 다양한 카메라 연출을 구현하려 했으나, 버전 호환성 문제로 인해 어려움을 겪었습니다.목표: 현재 진행 중인 "공포 게임" 프로젝트에서 게임의 시각적 표현을 향상시키고자 했습니다. 이 게임에서의 시각적 표현이 매우 중요하기 때문에, 시네머신의 다양한 기능을 활용하여 보다 효과적으로 연출하고자 했습니다.문제: 시네머신 기능을 사용하지 못한 주된 이유는 현재 사용 중인 프로젝트 버전과 호환되지 않는 문제 때문입니다. 그 결과, 시네머신 기능을 구현할 수 없었으며, 유사한 구성 요소의 속성이 불활성화되는 문제를 겪었습니다.튜터님의 조언: 오늘 작업을 점검받는 시간 동안, 튜터님께서 추가로..