2024/11 24

2024 11 19 TIL

유한 상태 머신 (FSM) 에 관하여 유한상태머신은 객체를 나타낼 때 상태라는 개념으로 정리해놓은 추상적인 장치입니다. 플레이어라는 오브젝트를 플레이어의 행동이라는 개념으로 나타내기 위해기본(Idle) , 걷기(Walk), 뛰기(Run) 처럼 나누어보겠습니다.  기본 서 있는 상태에서 걷거나 뛰려고 한다면 미리 구현해둔 키를 통해 동작을 구현할 수 있습니다.이렇게 wsad로 움직이고 shift로 뛰는 것을 하는 것처럼 키 입력을 트리거 삼아 다른 상태로 넘어가는 것을유한 상태머신 으로 부를 수 있겠습니다. 사실 우린 이 상태라는 개념을 이미 사용하고 있었습니다. 애니메이션을 출력하기 위해 특정 조건(패러미터)를 설정하여 트랜지션을 연결하는 것이나인풋 시스템을 사용하여 키 입력을 통해 다음 행동으로 넘어간..

TIL 2024.11.19

2024 11 18 TIL

이번에 AI 네비게이션의 Agent를 만들어보면서 기존의 Switch Case 문은 상태가 많아질수록 복잡해지고 알아보기 힘들다고 생각되었습니다.  지금까지 쓰고 있던 것도 일종의 FSM 패턴이지만 따로 클래스로 나누어 관리하는 방법을 강의에서 보고 리팩토링 하는 작업을 해보았습니다.   일단 하루를 마치기 전 튜터님께 피드백을 받아 Switch case 문에서 처리하던 상태변경을 각각의 상태에서 자연스럽게 처리되도록 하고 새로 생성한 객체를 더 이상 생성되지 않는 로직을 짜보려합니다.   아래는 현재의 변경 로직이며 이것을 각각 상태 내부에서 ChangeState를 호출하는 식으로 변경해볼 예정입니다.  그렇다면 강의를 다시 정독하는 것이 우선 순위기에 오늘 TIL은 간단하게 마치겠습니다.ublic v..

TIL 2024.11.18

2024 11 15 TIL

팀 과제 시작 후 역할 분담의 시간을 가졌음이번 주제는 자유주제 장르는 공포  현재 맡은 역할은 Navmesh AI를 이용한 적 구현전체적으로 팀 빌딩은 마치고 폴더링 후 제네릭 싱글톤만 구현하고 변경사항을 적용시켜 기본 틀을 만들어두었다. 새로 배우거나 좀 더 확실히 알게 된 개념 1. 제네릭 싱글톤 개선점 이번에 제네릭 싱글톤을 다같이 만들면서 DontDestroyOnLoad 할 싱글톤과 아닌 싱글톤을 기능을 나누어서 하려했는데처음엔 두개의 제네릭 싱글톤 스크립트로 나누어 관리를 하려고 하였다.  그렇지만 만들고보니 비슷한 기능의 스크립트를 두개로 만들어 관리하는 것이 좋은 지에 대해 의구심이 좀 든다. 그래서 팀원분의 조언을 참고하여 두개의 싱글톤으로 구현하는 것이 아닌 상속시키는 클래스에서 커스텀..

TIL 2024.11.15

2024 11 14 TIL

과제를 수행하고 나서 못들었던 강의들을 듣고 개념을 정리해보는 TIL 파티클 시스템은 수 천 개의 작은 오브젝트를 관리하고 동작 생성 파괴를 제어하는 시스템입니다.그리고 그 작은 오브젝트들을 파티클이라고 부릅니다. 파티클 시스템의 주요 컴포넌트emitter //발사체particles //파티클animator //애니메이터renderer //랜더러 파티클 시스템의 주요 모듈MainModule(메인 모듈)//파티클의 움직이는 속도와 크기, 회전, 최대 수량 등을 정할 수 있는 모듈//값을 설정할 때 일반적인 상수말고도 Random Between Two Constant등을 이용하여 랜덤한 값을 설정해줄수도 있다.https://docs.unity3d.com/kr/2021.2/Manual/PartSysMainMo..

TIL 2024.11.14

2024 11 13 TIL

유니티에서 코드를 작성하다 전체화면에서 화면 복원이라는 글씨가 사라지지 않는 오류가 계속 발생하고 있다.초기부터 이런 오류가 있었긴한데 오늘따라 더 심해서 코드를 자꾸 가려서 집중이 안된다.어디서 나온 건지도 모르는지라 아시는 분이 계시다면 알려주시면 감사합니다. 일단 오늘 TIL은  이번 주차에 대한 스스로의 아쉬움이 남아 코드적인 부분보단 회고에 가까운 것 같습니다. 일단 개인과제에서 오브젝트 생성을 하루종일 붙들고 있던 것 같다. 오브젝트풀을 적용시키면서 오류나 깨진 프리팹 수정그리고 배치 로직을 이해하면서 진행하고있다.  스크립터블 오브젝트를 활용하여 데이터를 받아오고 적용시켜보려하는데 내가 쓰면서도 조잡한 느낌이 없지않은 것 같아 계속 건드리니 문제는 해결안되고 시간만 계속 잡아먹었던 것 같다...

TIL 2024.11.13

2024 11 12 TIL

접은 글은 스스로에 대한 개인적인 피드백을 담고 있습니다. (TMI)더보기해설 영상을 보며 과제를 진행할 때 해설 영상의 코드를 이해해보려고 시간을 많이 허비하였습니다.  잘못된 방향으로 쓰여진 코드를 해설 영상의 코드이므로 일방적으로 맞다고 생각하며  너무 맹목적으로 정보를 받아들인 것을 반성하여봅니다.. ( 다른 사람의 코드에서 리팩토링을 하는 방향성만 알려주셨기에 해당 코드의 세부적인 내용에 대해선 튜터님께서도 모르셨다) 이번 개인과제 제출이 얼마안남은 상황이고 중간에 잘못된 방향으로 시간을 많이 잡아먹어 오늘 배운 내용으로만 생각을 간략하게 정리해야할 것 같습니다. 이제라도 과제를 전부 끝마치진 못하더라도 제 방식으로 다시 생각해보며 배운 내용을 활용해 경험을 쌓는 형식으로 과제를 수행해봐야할 것..

TIL 2024.11.12

2024 11 11 TIL

JSON 을 이용해 서버의 API를 가져오는 방법의 특강을 듣다 제너릭과 익명메서드에 대한 이해가 부족하였음을 느끼고 질문을 하게되었습니다.  C# 주차 때 개념을 이해하기 어려워 놓친 부분이 많다는 것을 다시 한번 인식하고 생각을 정리해보는 시간을 가져봅니다. 제너릭에 관해서  기존에는 꺽쇠()안에 자료형을 넣은 형태로만 생각하고 있었기에 리스트와 같은 자료구조에 쓰이는 개념정도로만 생각하였습니다.그래서 특강에서 보았던 제너릭 방식에 대해서 제가 T로 선언하고 호출하는 곳에서 자료형을 사용한 방식을 제대로 이해를 못했던 것 같습니다.//내가 생각했던 개념List  일단 먼저 제너릭을 사용하였던 이유  특강에서 제너릭을 사용하였던 이유는 SavePlayerData, SaveInvenData 등 Json..

TIL 2024.11.11

2024 11 08 TIL

심화주차에 앞서 먼저 복습반에 들어간 이유는 내가 배운 내용에 대해 좀 더 정확히 이해하여 잘못된 정보를 걸러내고 부족하였던 부분에서 좀 더 공부를 해보고 싶어 계기가 되었다. 개인 과제 수행에 앞서서 해설 영상을 보 이미 한번 배웠었지만 놓쳤던 부분에 대하여 적어보는 시간을 가진다.또한 오늘 특강들(4시간 거의 논스톱..) 중 패턴(OOP) 에 대한 내용을 토대로 좀 정리해보고 싶다. Animator의 패러미터를 조작할 때 string 형으로 사용하는 경우 문자열에서 Hash로 변환하는 과정을 반복하기에 성능에 좋지 않다고 한다. (shader 나 material 관련 패러미터를 조작하는 경우도 동일)animator.SetTrigger("Attacking");//바로 SetTrigger에 문자열을 넣어..

TIL 2024.11.08

2024 11 07 TIL

발표회가 끝나고나서 구조체에 대한 이야기가 잠깐 나왔습니다.이에 구조체에 대해선 정확하게 이해를 하고 있지 않아서 그대로 튜터님께 QNA를 드리고 정보를 얻었습니다. public class Player{ public int hp; public string name;}public struct Enemy{ public int hp; public string name;}저는 클래스와 구조체는 보기엔 유사한 형태를 띄고 있어 비슷한 기능을 하는 것으로 생각하였었습니다. 하지만 이번에 얻은 정보로 느낀 점은 보기에만 비슷하고 전혀 다른 역할을 하고 있던 것 같습니다.public class War{ Player player = new Player(); Enemy enemy = new Enem..

TIL 2024.11.07

2024 11 06 TIL

이번 프로젝트에선 플레이어의 위치와 체력,기력 등의 상태요소를 기록하여 저장할 수단이 필요하여 Json을 활용하고자 하였습니다. 하지만 프로젝트의 막바지에 하려니 저장해야하는 양이 방대한 것에 비해 설계가 힘들어 Player의 위치값과 상태값을 저장하는 것을 구현하는 것까지만 해보고 프로젝트에 적용하는 것은 보류하게 되었습니다. 그렇다고 해도 직렬화와 역직렬화를 직접해보면서 다음 프로젝트에서 써볼 발판을 마련하였다 생각하며 조금만 정리해봅니다. (발표준비 해야함)[Serializable]public class PlayerDB{ public string name; //데이터 파일 이름 public List Conditions; //플레이어 현 상태 값 public float position..

TIL 2024.11.06