유니티(15)
-
Unity - 커스텀 Class 내부의 Dictionary 를 Json으로 저장
Json 저장 방식에 추가로 알아보던 중 어느 한 분의 글을 보았습니다. 원문 : https://velog.io/@kohyeonseo1006/Unity-Dictionary를-Json-데이터로-파싱하기 (Unity) Dictionary를 Json 데이터로 파싱하기! Dictionary를 Json 데이터로 파싱하기 놀랍게도 Dictionary형식은 Json 데이터로 파싱이 안된다!! 그렇기에 한번 데이터를 후처리 후 파싱을 시켜야한다. 데이터를 Dictionary로 저장 후 JsonUtility로 ToJson하 velog.io 내용을 요약하면 다음과 같습니다. 1. JsonUtility 는 Dictionary를 파싱할 수 없다. 2. Dictionary 를 파싱하기 위해서는 따로 후처리를 해야한다. 사실 본..
2023.07.05 -
Unity - 초간단 세이브 로드 매니저
이번에 새로 개인용 라이브러리 패키지를 만들고 있는 중입니다. 그 중에서 하나인 세이브 로드 매니저를 공유하려고 합니다. 이거 집어넣고, 한 줄만 작성해도 세이브랑 로드가 되니까 편하더라구요. 코드 블럭 (얘는 그냥 전체 복붙 하시면 됩니다.) 더보기 using UnityEngine; using System.IO; // 블로그 : https://dyunace.tistory.com/ public static class SLManager { private static string saveFolderPath; private static string saveFilePath = saveFolderPath; /// /// 파일 경로 설정. 경로 따로 세이브 폴더 이름 따로 넣어서 사용. /// 고정 경로를 사용할 ..
2023.07.04 -
Dictionary 에서 enum 을 Key 로 사용할 때 성능에 대해서
결론 요약 * 유니티 버전은 21.3.16f1 입니다. 1. enum 을 key로 사용해도 Add, ContainKey, Remove 를 사용할 때 GC가 발생하지 않는다. (string도 마찬가지) 2. (작성자가 사용하는) 실제 오브젝트 풀링 코드에서도 실행했을 때 GC가 발생하지 않는다. 3. 본인은 더 좋은 코드 개량을 할 수 있었다! 제가 보던 일부 강의에서는 오브젝트 풀링을 만들 때, 새 객체를 생성할 때마다 해당 객체를 생성해주는 코드를 작성하는 것을 보았습니다. 물론 기초 강의라서 초보자 입장에서는 이해하기 쉽도록 하기 위함이겠죠. 저는 그것을 최대한 단순화 시키기 위해서 enum 타입 값을 만들고 그것을 타입으로 지정해 Dictionary에 자동 분배하는 코드를 자주 사용했습니다. 인스펙..
2023.06.30 -
부채꼴 범위 탐색 만들기, 벽 판정
한참 3D 토이 프로젝트로 포폴을 만들고 있을 때 학원에서 부채꼴 탐지를 만드는 법을 배웠던게 기억났습니다. 다른 분들은 어떻게 만들었나도 궁금해서 검색도 해보았는데 대부분이 부채꼴 범위 탐색은 구현을 하였는데, 벽에 가려지거나 하는 방식은 거의 없더군요. 제가 잘 못찾은 걸 수도 있구요. 그래서, 이번에 만들 것은 부채꼴 탐색 에 더해 벽 너머는 탐색을 하지 못하도록 막으려고 합니다. 옛날에 공부했던 프로젝트 파일도 다행히 남아있었고 언젠간 삭제해버릴지도 모르고해서 여기에 복습겸 기록해두기로 합니다. 일단 결론부터 말하자면 사실 부채꼴 탐색 까지는 똑같고 벽에 가려지는지 확인 하는 법은 정말 간단하긴 합니다. 부채꼴 탐색 후에 해당 방향으로 레이캐스트를 실행해서 막히지 않으면 탐색 완료된거죠. 부채꼴 ..
2023.05.25 -
리소스에 대해
* 틀린 정보 지적은 언제나 감사합니다 * 리소스 폴더에 대해 공부하던 중 알게 된 정보를 적어보도록 하겠습니다. 1. Resources 폴더 Resources 폴더는 Resources.Load() 메서드를 사용할 때, 가져올 오브젝트들을 넣어두기 위해 사용한다고 합니다. 다른 폴더 아래에 여러 Resources 폴더가 있어도 된다고 하며 Resources 폴더 아래 다른 폴더가 여러개 있어도 된다고 합니다. 리소스 폴더는 빌드 시 모든 오브젝트가 resources.asset 형태의 파일로 빌드된다고 합니다. 이 과정에서 빌드 시 시간이 오래 걸리게 된다고 합니다. 2. Resources.Load() (이하 로드) 오브젝트를 로드할 때 가져온 정보는 사라지지 않고 캐시 정보로 메모리에 남는다고 합니다. ..
2023.05.14 -
게임 오브젝트 찾기(GameObject.Find())에 대해
* 잘못된 정보 지적은 항상 감사합니다 * 얼마 전, 공부하던 중 GameObject.Find() 에 대해 더 찾아본 적이 있었습니다. 이 동안 배운 내용들을 정리하여 적어보겠습니다. 1. 비활성화 오브젝트 찾기 GameObject.Find() 는 비활성화 상태의 오브젝트를 가져올 수 없다고 합니다. 비활성화 상태의 오브젝트를 가져오려면 Transform.Find() 를 사용해야 한다고 하더군요. 다만, Transform.Find는 자식 오브젝트만 가져올 수 있다고 합니다. 제가 사용하는 시점에서는 Transform.FindObjectOfType() 을 사용 가능한 모양입니다. 2. Find 의 단점 Find 계열 메서드는 모든 오브젝트를 검사해 찾아내기 때문에 성능에 좋지 못하다고 합니다. GetCom..
2023.05.14