728x90
728x90
유니티 동적 파일 Load에 필요한 Resources 폴더 예를 들어 유저가 게임을 다운받았을 때 필요 없는 애셋들(테스트용 또는 에셋 번들 등)까지 받을 필요는 없다. 보통 게임 사에서는 게임 제작 시 필요한 prefab들을 한데 묶어서 빌드하므로서 최적화 작업을 수행한다. 하지만 최종 완성 전 개발 단계에서 수시로 프로젝트를 테스트해야 하는 과정에서는 애셋을 확정지을수도 없을 뿐더러 필요 에셋을 수시로 주고받아야 하는 상황이 발생할 수 있다. 예를 들어, 개발 프로젝트를 합칠 때 리소스에 대한 통제가 원활하지 않으면 프리팹이 누락되거나 필드에 연결되지 않아 테스트 동작하는 데 문제가 발생할 수 있다. 이렇게 리소스에 대한 유연한 사용이 필요할 때 우리는 Resources 파일을 사용해주면 된다. 유저..
2D 배경 제작 시 Plane과 Quad 차이 2D 배경을 제작할 때 3D Object에서 Plane과 Quad를 생성해서 제작한다. 둘 다 똑같이 사각형 모양이기 때문에 두 개 중 어떤 것을 사용해도 상관은 없지만 자세히 보면 다른 점을 발견할 수 있다. 먼저 Plane은 wireFrame 모드로 보면 다음과 같이 나누어지는 것을 볼 수 있다. 기본 plane 한 개의 wireFrame은 총 vertex 600개로 구성되어 있다. 이는 연산량도 많고 무겁기 때문에 여기에 img를 입히면 퀄리티가 상대적으로 떨어지게 된다. 반면 qaud는 verterx가 6개 이루어져 매우 단순한 형태임을 확인할 수 있다. 이는 처리할 때 매우 가볍기 때문에 img를 입혀도 훨씬 성능을 높일 수 있다. 따라서 같은 기능..
일반화(Generic) 개요 및 제네릭 메서드(Generic Method) & 제네릭 클래스(Generic Class) 선언 일반화 제네릭 Generic의 사전적 의미는 '포괄적인', '범용적인', '일반적인'이라는 뜻이다. 어떤 특정한 기법을 타겟팅 하는 것이 아니라 두루두루 사용할 수 있도록 한다. 일반적으로 클래스를 정의할 때, 클래스 내의 모든 데이터 타입을 정해준다. 대부분이 동일하지만 일부 데이터 타입만 다른 경우도 존재하는데, 그 예로 int 타입을 파라미터로 받은 메서드는 double 타입의 데이터를 사용할 수 없게 된다. 이러한 이슈를 한번에 해결할 수 있는 방법으로 제네릭 타입(Generic Type)을 사용하면 int, float, double 등 특정 데이터 타입을 확정하지 않고 데..
파일 입출력(File IO)과 스트림(Stream), prefab 인스턴스 유니티에서 슈팅 게임을 제작할 때 bulletFactory에서 prefab화 되어있는 bullet 인스턴스를 생성하는 방식을 자주 사용한다. 해당 방식이 유니티 내에서 어떤 절차를 거쳐 실행되는지에 대한 내용을 작성해보고자 한다. 먼저 스트림(Stream)은 '데이터가 흐르는 통로'로 데이터를 옮길 때, 스트림을 만들어 둘 사이를 연결한다. 메모리 하드 디스크와 같이 저장 매체에 데이터를 저장하고 불러오는 역할을 하는 것이다. 우리가 스크립트에서 bullet 변수를 선언하고 하이라키창에 bullet 오브젝트를 생성하는 것은 동적 메모리 할당(임시적)이기 때문에 프로그램을 종료하면 사라지게 된다. 하지만 bullet 오브젝트를 하드..
플레이어의 상/하/좌/우 움직임과 적이 플레이어를 따라다니도록 설정하는 코드 구현 시 몇몇 새로 알게된 사실이 있다. 쉽게 넘어갈 수도 있는 내용이지만 사실 굉장히 중요한 내용이고, 이를 바탕으로 응용할 수 있는 내용들이 많은 것 같아 정리하려고 한다. Vector3를 사용하여 오브젝트 이동 구현하기 float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); // 방법 1 Vector3 dir = Vector3.right * h + Vector3.up * v; transform.position += dir * speed * Time.deltaTime; // 방법 2 Vector3 dir = new Vector3(h, v, 0);..
2D 화면 상 배경 이미지 스크롤 방법 2D 게임을 진행하다보면 배경이 무한 스크롤되는 것을 종종 확인할 수 있다. 유니티에서는 다음 방법으로 배경 스크롤을 간단하게 구현할 수 있다. 배경으로 쓸 2D 소스들을 임포트해주었다. 총 7개의 배경이 간격을 두고 겹쳐보이게 한 후 한쪽 방향으로 흐르게 만들 것이다. Material을 7개 생성하고 Shader는 Unlit/Transparent로 변경 후 임포트한 배경 Texture을 매핑해주었다. 그리고 씬 뷰에서 Quad를 7개 만들고 Materials에 각각 연결해 준 뒤 하늘 - 구름 - 산 - 돌 순으로 위치를 조정(Z값 이동)해주어 게임 뷰에서는 겹쳐보이도록 만들었다. 그리고 BGScroller라는 빈 오브젝트를 생성 후 7개의 배경을 자식화한 뒤 B..