DEVLOG · TIL · CODING TEST · PROJECT

유니티공부

Unity 21일차 TIL - Unity 2D 프로젝트1

오늘은 개인 과제로 하고 있는 것 중에서 참석인원 UI와 NPC 대화를 제외하고 다 구현했다. 진행하면서 다른 Script에 있는 Class를 사용하고 싶어서 처음에는 [SerializeField]를 사용해서 필요한 오브젝트들을 추가하는 식으로 진행하다가 변수 하나 찾으려고 오브젝트를 넣는게 비효율적인 것 같아서 변수를 static으로 변경해서 사용했더니 신세계였다. 물론 좋은 방법인지는 모르겠지만 일단 완성을 목표로 진행할 것 같다. 그리고 버튼을 사용하면서 기존에 있던 Script들을 재활용하고 필요한 오브젝트들을 찾아서 넣어주는 부분이 은근 헷갈리는 것 같다. UI를 사용하는 도중 TMP - TextMeshPro가 붙어있는 오브젝트들은 Text class로 받아오는 것이 아니라 TMP_InputFi..

자세히 보기 →

Unity 20일차 TIL - Unity(InputSystem을 이용한 캐릭터 이동)

1. 편한 관리를 위해서 Assets 폴더에 Input 폴더를 하나 생성해준다.2. Create -> Input Actions (맨 밑에)으로 Input Action Asset을 생성해준다.3. Input Action Asset을 실행한 뒤 ActionMpas를 하나 추가해주면 Actions도 하나 추가된다.4. Component - Player Input에서 Behavior : Send Messages를 사용할 때 Actions에서 설정해둔 이름으로 함수를 호출 할 수 있다. 여기서는 Move로 이름을 설정해뒀기 때문에 움직일 때 호출 받는 함수는 OnMove로 사용한다.ex) 만약에 Move가 아니라 MoveInput이라고 이름을 설정했다면 OnMove가 아니라 OnMoveInput으로 사용하면 된다..

자세히 보기 →

Unity 19일차 TIL - Unity(InputSystem)

Input System - 입력 행동들을 정리하는 시스템1. Input Action : 입력 행동을 정의한다. "이동", "공격" 등의 행동을 정의하고 트리거하는 키 또는 버튼을 지정할 수 있다.2. Input Action Asset : 여러 개의 입력 행동을 그룹화하는 방법.3. Player Input Component : 자동으로 입력 행동을 처리하고 해당 게임 오브젝트에 메시지를 보낸다. Input System을 사용하기 위해서는 Package를 추가해야된다.Window -> Package Manager -> Unity Register -> Input System -> Install Action Type : 입력을 어떻게 받을 것인지1. Value : 눌렀을 때, 누르고 있을 때, 뗄 때 등 다양한..

자세히 보기 →

Unity 18일차 TIL - 팀 프로젝트 회고록

오늘은 2024.04.29 ~ 2024.05.07까지 진행했었던 TextRPG 구현이 끝나고, 발표를 하면서 마무리 하는 날이였다. 다른 조들의 발표를 보니 거의 모두가 클래스 설계, 플로우 차트, 와이어프레임 등 프로젝트를 시작하기 전에 굉장히 체계적으로 분배와 정리를 하고 있다는 것을 알게 됐었다. 우리 조는 서로 얘기하지 않아도 알아서 다들 기능을 하나씩 맡아서 구현해준 덕에 필수 요구 사항과 선택 요구 사항 구현이라는 공동 목표만 있었을 뿐, 체계적이게 프로젝트를 진행해봤으면 어땠을까 하는 아쉬움이 남는다. 이번에 발표 들어보면서 느꼈던건 확실히 관련 전공자 혹은 경험자가 있는 조와 그렇지 않은 조가 어느정도 구분이 되는 것 같다. 첫 프로젝트였고, 원래 조원들과 목표로 잡고 생각했던 대로 다 구..

자세히 보기 →

Unity 17일차 TIL - 재귀 함수 (스택 관리)

TextRPG 게임 플레이 도중 어떤 동작을 다 끝내고 마무리를 했을 때 생각지도 못했던 부분에서 다시 시작되는 경우가 생겼었다. 왜 그런건지 고민을 하다가 디버깅을 통해서 확인 해본 결과 호출 스택 관리 부분에서 함수가 계속 누적해서 쌓이는 것을 확인할 수 있었다. TextRPG를 구현 할 때 GameManager라는 class에서 MainMenu함수를 통해 구현한 다른 class에 접근을 하게 된다. 그렇다보니 함수를 제대로 끝내지 않고 다시 MainMenu 함수로 왔다 갔다 하거나, 아니면 처음 접근한 class에 계속 호출이 스택되는 현상이 생겼었다. 그래서 첫 호출을 했던 그곳으로 다시 돌아오도록 return;을 함수 끝에 넣어줘서 동작이 끝났을 때 첫 호출을 했던 지점으로 돌아오게끔 수정해서 ..

자세히 보기 →

Unity 16일차 TIL - 오류 해결

기존에 Class에 대한 개념을 잘못 이해하고 있었다.int i = 0;는 stack에 int i와 0이라는 데이터값이 들어가고 Class Test 일때 Test test1 = new Test();는 new Test()가 힙에 생성이 되고 그 주소값이 Test test1이 있는 스택 공간에 들어가게 된다. 그리고 이때 착각했던 것이 그냥 주소값만 가져온다고 생각했던 것이였다.바로 new Test()라는게 Test 클래스를 새로 만드는 과정이였다. 그래서 앞서 Test1과 Test2 클래스를 생성하고 각각의 클래스에서 서로 다른 클래스를 인스턴스화 시킨 뒤 Program 클래스에서 Test2 클래스를 새로 생성하게 되면 Test2 클래스의 객체를 생성할 때 Test1 클래스를 인스턴스화 시키는 부분이 실행..

자세히 보기 →

Unity 15일차 TIL - 오류 (Class_Stack OverFlow)

팀 프로젝트 진행 2일차아이템의 사용되는 상점, 인벤토리, 장착관리 등을 만들고 포션을 만들고 있다. 만들다보니 Class에 대해서 제대로 이해하지 못하고 있는 것 같다.// Test1.csClass Test1{ Test2 test2 = new Test2(); public int ShopGold { get; }}// Test2.csClass Test2{ Test1 test1 = new Test1(); public int PlayerGold { get; }}// Program.csClass Program{ static void Main(string[] args) { Test2 test2 = new Test2(); // Stack OverFlow }}기존에 이해했었던 것은 클래스..

자세히 보기 →

Unity 14일차 TIL - Github

본격적으로 팀 프로젝트를 시작하면서 Github를 제대로 사용하게 됐다. 아직 사용하는게 익숙하지 않아서 여러가지 상황들이 생겼었던 것 같다. 1. 병합 충돌murge를 할 때 보통 main branch를 기준으로 Dev branch를 만든 후 Dev branch를 기준으로 각자 팀원들끼리 사용하는 branch를 만든 후에 작업을 수행했다.작업을 수행 한 후 Dev branch로 merge하는 과정에서 여러 충돌들이 있었는데 그 이유는 동일한 cs파일을 수정해서 생기는 문제였다. 문제가 생기면 기존에 있던 Dev branch에 있는 파일을 사용할지, 아니면 내 branch에서 들고온 파일을 사용할지 정하게 되는데 이때 실수하게 되면 머리속이 복잡해진다.그렇기에 충돌이 발생하면 우선 팀원들과 상의한 후에 ..

자세히 보기 →