XR Origin → LeftHand Controller 하위 오브젝트로 큐브, 구 등 원하는 대로 배치하여 커스텀 게임 실행 시 자동으로 모델링 되도록 하기 프리팹화 만들어둔 모델을 프로젝트 창으로 드래그하여 프리팹화함 기존에 Hierarchy에 있던 Model들은 삭제 LeftHand Controller와 rightHand Controller에 있던 Model Prefab에 프리팹을 넣음 연결된 프리팹을 자동으로 게임 오브젝트로 만들어서 배치해 줌 결과 1 게임 실행 시 자동으로 커스텀했던 모델이 XR Origin과 붙어서 나오는 것을 확인 가능 결과 2 VR 움직임이 잘 된다.
HMD 새로운 Scene 생성 File → New Scene → Standard(URP) 선택 저장 장소는 Scenes 폴더 안에 적당한 이름으로 저장 XR Origin 게임 오브젝트 생성 Hierarchy 창에서 우클릭 → XR → XR Origin(VR)을 클릭 XR Origin(VR) 게임 오브젝트는 뭘까? HMD나 컨트롤러 등 연동된 장비의 기준이 되는 오브젝트 VR/AR 세상의 중심이나, 헤드셋 기준 높이 등을 설정할 때 사용 일반적으로 HMD와 연동된 메인 카메라 게임 오브젝트와 양손 컨트롤러와 연동된 게임 오브젝트 등을 자식으로 배치 자동적으로 메인 카메라가 XR Origin 게임 오브젝트의 자식 오브젝트로 들어감 XR Interaction Mananger라는 게임 오브젝트도 함께 생성 Ma..
해당 학습은 VR기기가 없어도 시뮬레이터를 통해 게임 제작 및 테스트가 가능합니다. 때문에 VR 기기가 없어도 학습이 가능함을 알려드립니다. 개요 XR Interaction ToolKit이란? Unity에서 제작한 Unity XR 기반의 플러그인 유니티의 공식 플러그인 → 지원 및 업데이트가 보장될 것이라는 장점 모든 VR 플러그인 중 수명이 가장 김 VR의 일반적인 기능을 스크립트 없이 편하게 구현할 수 있음 Teleportation이나 Interaction 등 스크립트 작성량이 가장 적음 유니티에서 지원하는 다양한 VR장비들을 모바일과 PC에 손쉽게 연동 가능 PC/Mobile VR 장비에 모두 대응 가능 AR Foundation을 연동하면 AR 콘텐츠 제작해도 활용 가능 XR Interaction ..
클래스(Class)와 구조체(Struct)의 차이 Class 참조 형식으로 Heap 영역에 할당 제거될 때 가비지 컬렉터(Garbage Collector)에 의해 수거됨 상속 가능 Struct 값 타입이고 스택(Stack)에 할당됨 함수에서 나갈 때 CLI에 의해 수거됨 상속이 불가능함 프로파일러로 분석 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Assign_Test : MonoBehaviour { public bool triggerClass; public bool triggerStruct; // 클래스 class Test_class { int a; }; // 구조체 struct Te..
텍스트 아웃라인/쉐도우(Outline/Shadow) 텍스트에 아무런 효과를 안 줬을 때(Outline X, Shadow X) → vertex : 344 아웃라인/쉐도우 (Outline / Shadow) 아웃라인과 쉐도우는 vertex 낭비가 굉장히 심함 아웃라인 > 쉐도우 (아웃라인이 쉐도우보다 낭비가 더 심함) 아웃라인을 적용해 줬을 때 → vertex 2500개 쉐도우 적용해 줬을 때 → vertex 1000개 모바일 게임에서는 한 장면에 vertex의 개수가 10만 개가 넘어가면 유니티 엔진 자체에서 경고가 무수히 날아옴 굉장히 유의해서 사용해야 함 vertex 개수는 항상 신경 써줘야 함 BestFit 입력한 텍스트가 Rect Transfrom(설정해 둔 사각형)에 다 들어올 수 있도록 글자 사이..
Canvas 최적화 프로파일러로 분석 Text를 변경하는 스크립트를 통해 프로파일러로 퍼포먼스 분석 PostLateUpdate.PlayerUpdate를 보면 Canvas에서 그려지는 작업이 발생하는 것을 알 수 있다. → 텍스트를 변경하는 작업은 Canvas에서 발생 버텍스 버퍼 유니티의 UI는 화면에 그려질 때 버텍스 버퍼(Vertex Buffer)로 그려짐 Scene → WireFrame으로 보면 버텍스 버퍼를 볼 수 있음 버텍스는 하나의 선(line) 단위 해당 그림에서는 총 28개의 버텍스가 존재 더보기 버텍스 버퍼는 Canvas에 위치함 그려지는 과정 버텍스 버퍼의 변형이 발생 해당 버텍스 버퍼를 리빌드(Rebuild) 최적화가 필요한 이유 하나의 UI가 변경이 일어나면 그 Canvas 전체를 ..
프로파일러 유니티 엔진에서 제공해 주는 유니티에서 개발하고 있는 앱을 분석할 수 있는 툴 매 프레임마다 구체적인 퍼포먼스를 분석할 수 있음 게임의 최적화를 위해 사용 Deep Profile을 통해 정밀 분석 가능 어떤 모드로 분석을 하는 것은 자유지만 필자는 Hierarchy로 보는 게 편해서 해당 모드로 분석 해당 상태에서 게임을 시작하면 분석 차트가 흘러나옴. Hierarchy EditorLoop : 에디터 상에서만 사용되는 퍼포먼스 최적화 측면에서는 전혀 고려하지 않아도 됨 PlayerLoop : 프로그래머가 직접 조작하는 부분들 최적화 측면에서 고려해야 하는 부분 해당 부분을 분석해야 함 프로파일러 분석하는 법 오브젝트를 회전시키는 스크립트가 아래처럼 존재한다. 해당 스크립트는 Update 함수에..
버튼을 누르면 실행될 함수를 만들기 위해 PopUpManager.cs라는 스크립트를 따로 만들 것이다. 해당 스크립트에는 팝업버튼이 해야 하는 기능 (팝업 닫기, 왼쪽 버튼 눌렀을 때, 오른쪽 버튼 눌렀을 때 등)으로 구성되어 있다. PopUpManager.cs 기본 설정 - 싱글턴 패턴 public class PopUpManager : MonoBehaviour { // 싱글턴 패턴 ~~~~~~~~~~~~~~~~~~~~~~~~ private static PopUpManager _instance; public static PopUpManager Instance { get { return _instance; } } // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public GameOb..