부트캠프 분류 126

2024 11 12 TIL

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

2024 11 11 TIL

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

2024 11 08 TIL

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

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..

2024 11 06 TIL

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

2024 11 05 TIL

오늘 TIL은 간략히 정리해보고 새로 배운 내용을 바탕으로 먼저 구현해보러 가본다. 오늘 한 실수 :  쓰임을 마치고 비활성화 된 오브젝트를 다시 풀로 회수하고 싶어 Instatiate로 복제된 프리팹의 이름을 가져와 다시 딕셔너리의 큐에 넣어주는 코드를 작성하던 중 Replace 를 사용해도 제대로 (Clone) 이 지워지지 않는 것을 봐서왜 그러지 했는데 다시 이름안에 넣어주어야 한다는 것을 잊었다.  알고리즘 문제좀 많이 풀어봐야 할것같다.  Resource[] objects = GetComponentsInChildren(true); //오브젝트의 하위 게임오브젝트들을 가져옴 true를 쓴 이유는 비활성화 된 오브젝트를 찾기 위해 foreach (Resource obj in objects) { ..

직렬화(유니티)

직렬화란 유니티에서 직렬화(Serialization)는 데이터의 구조나 오브젝트 상태를 에디터가 저장하고 나중에재구성할 수 있는 포맷으로 자동 변환하는 프로세스를 말한다. 라고 유니티에서 말합니다. 직렬화를 사용하는 이유? 간단하게 생각하자면 데이터를 저장하여 다음 실행 때도 해당 데이터를 불러오고 싶을 때 쓰입니다.여러게임에서  우리가 저장이라는 개념을 알고 있듯 직렬화는 해당 데이터를 불러오고 싶어 그 주소를 기억하고 있는 것과 같습니다.  직렬화할 수 있는 단순 필드 타입Serializable 속성이 있는 비추상, 비일반 커스텀 클래스Serializable 속성이 있는 커스텀 구조체UnityEngine.Object에서 파생된 오브젝트에 대한 레퍼런스기본 데이터 형식(int, float, double..

2024 11 04 TIL

오브젝트 풀링과정에서 다른 곳에서 받아온 리스트의 오브젝트를 큐로 집어넣고 다시 큐를 딕셔너리에 넣는데 NullReferenceException이 발생하였다.   해당 오류의 사유는 Start문에 있었다.  ResourceSpwan 이라는 곳에서 List를 받아와서 Queue에 넣고 딕셔너리에 키를 등록하는 것인데  해당 로직이 Start문 안에 있다.  따라서 딕셔너리가 초기화되는 Start문의 입장이 애매해져 딕셔너리가 선언만 되고 빈 껍데기였던 것이다.  public Dictionary> resourceDictionary = new();따라서 딕셔너리를 선언할 때 미리 초기화를 시켜주니 오류가 해결되었다.  개선할 사항메서드를 사용할 땐 동작하는 이름 동사중심 명사중심 이름 짓기 연습 메소드    ..

2024 11 01 TIL

오늘 공유된 문제 : 에셋이 분홍색으로 표시되어 보이는 현상 에셋 속성 확인 projectSetting -> Graphics 에서 속성확인 가능 none이면 built in  외에 두가지 속성 속성이 다른 에셋이 들어가면 정상적으로 에셋이 보이지 않음. 따라서 에셋을 사용할 땐 속성을 통일하여 사용하여야함깃에 충돌이 발생하였던 문제 : 머지를 필수적으로 하면서 작업을 진행하도록 하자.  언제 무슨 상황이 일어날지 모르기에 어제 진행하였던 스크립트에 실행순서가 꼬이는 문제가 발생하여 수정하였고UI 는 크게 상속이 필요하지 않을 것 같다는 피드백을 받아 CondtionUI에 UI를 채우는 대상을 설정할 수 있도록 하여수정완료하였다.  또한 굳이 UIData 스크립트를 쓸 필요가 없다는 피드백으로 스크립트가 ..

2024 10 31 TIL

이번 팀 프로젝트에서 선택한 과제 유형은 서바이벌 게임이다.  선택한 사유는 별이 세개긴 하지만 필수구현 같은 경우강의에서 배운 내용을 토대로 하면 문제가 없을 것 같고 또한 4명 모두 서바이벌 게임에 대한 공부를 희망하기에만장일치로 택하게 되었다. 오늘 내가 맡은 것은 체력 , 스테미나 등등 플레이어의 상태요소를 구현하는 것이다. 우선 이러한 상태들을 Condition이라 명명하고 플레이어의 상태를 나타내는 것이기 때문에 Player 폴더에 새로 폴더를 추가하였다.   오늘 작성한 스크립트들을 테스트하기 위해선 UI를 작업해야하는데 아직 UI가 없어 일단 스크립트만 나열해놓고 작동이 되는지는 뒤에 확인하기로 한다.public class Condition : MonoBehaviour { public..