학교에서 열리는 E스포츠 대회에서 전시를 위해 빌드본을 뽑아내며 느낀 것... 우리 게임 빌드본의 용량이 너무 크다는 것이다!! 앞만 보고 바쁘게 개발해서 최적화는 신경도 쓰지 못했는데... 거의 800mb가 되는 용량에 충격을 먹은 나머지... 최적화해야겠다는 생각을 했다... 텍스쳐 리사이징 가장 시급한 텍스쳐부터 최적화를 했다. 게임이 3D다 보니 노멀맵이나 AO 등등... 텍스쳐가 정말 많다. 개발에 급급해서 신경도 쓰지 않고 있던 텍스쳐 몇 백개를 리사이징 하려니 꽤 힘들었다. 미리 해놓을 걸... 2048로 되어있던 너무나도 큰 텍스쳐의 Max Size를 Albedo는 1024, Normal, AO, Height은 512로 리사이징을 해주었다. 에셋을 임포트 해놓고 안 쓰는 텍스쳐도 깔끔하게 ..
엔진 프로젝트를 하다가 발견한 문제. Scriptable Object를 JSON으로 동적 저장을 하면, 변수들이 와다다 저장이 되는 게 아니라, instanceID만 저장이 된다! 사실 여기까지는 별다른 큰 문제는 없었지만... 문제는 유니티를 껐다 키는 순간 SO들의 instanceID가 모두 달라지면서, 이상한 값을 받아오게 되는 것이다!! 가장 초보적인 해결 방법으로, 객체 대신 객체의 고유한 ID를 저장하는 것으로 해결했다. 지금은 쉽게 보기 위해 문자열이지만, 문자열은 아무래도 무거우니 해시로 바꾸어 저장해도 나쁘지 않을 것 같다! 다만, 이건 근본적인 해결 방안이 아니다... 그 객체에 있는 모든 정보가 저장이 되지 않기 때문이다. 지금 프로젝트는 객체 내부 값은 변하지 않고, 객체만 필요했으..
오늘은 모두의 마블 주사위 던지기 시스템을 만들어봤다. 2학기 엔진 응용 팀 프로젝트가 주사위 주제의 게임이라서 만들어 보았다. 1. 원 설정하기 일단, 삼각함수를 이용해서 구현하므로 호의 바깥 부분 모양의 게이지가 필요하다. 직접 포토샵에서 원을 잘라서 만들었다. Unity에서 Canvas->Image를 클릭하고 해당 Sprite를 넣어준다. Preserve Aspect도 활성화해 이미지의 비율이 깨지지 않도록 한다. RayCast Target 또한 필요하지 않을 것 같으므로 비활성화해준다. 여기서 중요한 게, Pivot을 Center 말고 게이지 중간의 아래쪽으로 선택해야 한다. 이는 나중에 중심점과의 길이를 구하기 위해서이다. Pivot으로 설정해서 파란 원형 테두리인 Pivot을 옮기자. Pivo..
동물의 능력에 관한 시트이다. 이런 시트에서 한 행을 클래스 인스턴스화 하는 것과 전체를 리스트화하는 것을 알아볼 것이다. 1. 스프레드 시트 -> 텍스트 데이터 스프레드 시트를 텍스터 데이터화하려면 특수한 링크가 필요하다. 기존 스프레드 시트의 링크는 이렇다. 여기서 tsv 데이터(탭으로 나눠져 있는 텍스트 데이터)로 바꾸기 위해서는... {Address}/export?format=tsv&range={Range}&gid={SheetID} 이런 꼴로 고쳐주어야 하는데, 1. Address 위에 나와있는 링크의 /edit 전 까지의 부분이다. 2. Range 이 노란 부분 {A2:D7}이 Range이다. 우리는 더 많은 데이터가 추가될 수 있으므로 {A2:D} 영역을 선택할 것이다. 3. Sheet ID ..