본문 바로가기

Unity Engine

(19)
유니티 엔진에서 임베디드 db를 통한 데이터 관리 게임 개발을 하면 아이템의 보상 값이나 몬스터의 체력 수치 등, 데이터시트에서 수많은 데이터를 읽어야 한다. 그런데, 그 양이 수십만 줄이 되는 경우, 데이터를 몽땅 메모리에 올리면 부담이 갈 것이다. 대신 로컬 스토리지용으로 쓸 수 있는 임베디드 db를 사용하면 모든 데이터를 한 번에 메모리에 올리지 않고도 필요한 데이터를 그때그때 로드하는 방식으로 메모리 사용량을 절약할 수 있다. 이 포스트에서는 SQLite를 사용하여 데이터를 db 형식으로 관리하는 방법에 대해 소개하고자 한다.데이터를 임베디드 db로 관리하면 어떻게 좋은가요?데이터를 임베디드 db 형태로 저장하게 되면 어떤 데이터가 필요할 때마다 디스크에서 읽도록 하여 데이터가 메모리에 상주하지 않아 그만큼 메모리 사용량을 줄일 수 있다. 메모리..
[Unity] 오브젝트 클릭과 터치 감지 구현하기 이 포스트에서는 유니티 엔진에서 오브젝트를 PC 환경에서 클릭 혹은 모바일에서 터치하는 방법을 알아본다. 2D를 기준으로 작성했다.IPointerDownHandler와 IPointerUpHandler먼저 오브젝트에 대한 터치를 구현하기 위해서는 위 두 인터페이스가 필요하다. UnityEngine.EventSystems에서 제공되는 인터페이스로 각각의 역할은 다음과 같다.IPointerDownHandler대상 오브젝트를 눌렀을 때 호출되는 콜백이다.IPointerUpHandler대상 오브젝트를 눌렀다가 뗐을 때 호출되는 콜백이다. 사용자는 이 두 인터페이스를 활용하여 오브젝트를 터치할 때의 동작을 구현할 수 있다. 하지만 단순히 이 두 가지 인터페이스를 사용한다고 할 수 있는 건 아니고 아래 설명할 준비를..
[Unity] 2D 오브젝트가 이동 중에 걸리는 현상 - Ghost Vertices 유니티에서 블럭맵 형태의 스테이지를 개발하고 캐릭터를 이동하다 보면 캐릭터가 바닥에 걸려 움직이지 못하는 경우가 생길 수 있다. 이 포스트에서는 이 현상의 원인을 찾고 해결하는 간단한 방법을 제시한다.Ghost Vertices이 문제는 이미 Ghost Vertices라는 문제로 알려져있다.  이 문제에 한정하여 정리하면 직사각형 형태의 충돌체(유니티에서는 Box Collider)가 새로운 모서리를 만날 때 캐릭터가 진행하는 방향에 대해 반작용이 발생하여 이동이 저지된다고 한다.유니티 엔진에서의 해결 방법 유니티 엔진에서는 캐릭터의 콜라이더를 박스가 아닌 다른 것으로 설정하여 쉽게 해결할 수 있다. 어떤 콜라이더를 쓰던지 반작용이 발생하는 것을 막으면 된다.더보기아래 링크에서 Ghost Vertices에 ..
[Unity] 스프라이트 시트로 랜덤 파티클 만들기 유니티에서는 여러 개의 스프라이트가 한 이미지 파일에 들어있는 집합을 이용하여 무작위로 선택된 스프라이트 모양으로 파티클을 발생시킬 수 있다. 이 포스트에서는 스프라이트 시트를 구해 위와 같은 무작위 파티클을 구현하는 방법을 알아본다.스프라이트 시트 구하기무료로 스프라이트 시트를 다운로드할 수 있는 인터넷 사이트가 있다. https://www.pngwing.com/ko/search?q=%EC%8A%A4%ED%94%84%EB%9D%BC%EC%9D%B4%ED%8A%B8+%EC%8B%9C%ED%8A%B8 여기서 원하는 시트를 다운로드 하도록 하자.스프라이트 시트 생성하기 받은 이미지를 프로젝트에 넣고 인스펙터에서 Sprite Mode > Multiple로 설정한 뒤 Apply를 눌러 적용한다.  그리고 Spr..
[Unity] 스프라이트 뭉치로 애니메이션 만들기 유니티 엔진에서 여러 스프라이트를 연속적으로 재생할 수 있는 애니메이션을 쉽게 만들 수 있다.애니메이션 생성먼저 Sprite 프레임들을 준비한다.  그런 다음 애니메이션을 만들 스프라이트를 모두 선택한 후 유니티 에디터의 Hierachy 창으로 드래그 한다.  그러면 아래처럼 애니메이션 파일을 생성할 수 있는데 적당한 위치에 생성하도록 한다.  그러면 애니메이터와 애니메이션 클립, 그리고 씬에 오브젝트가 생성된 것을 볼 수 있다.  이벤트 추가와 제어 스크립트 작성여기서 특정 키 프레임에 이벤트를 발생시키는 애니메이션 이벤트를 추가할 수 있다.  추가하고자 하는 프레임에 우클릭을 하면 Add Animation Event를 생성할 수 있다. 스크린샷에서는 이미 이벤트를 하나 추가해서 이벤트가 하나 띄워져 ..