Unity 오브젝트를 Slice해버리자~
빠밤★ 신기하쥬? 코드는 조만간 리뷰할게유~.~
- Unity/Study
- · 2022. 9. 26.
터레인 생성하기 하이러키창에 우클릭 후 [3D Object] -> [Terrain]을 클릭하여 터레인을 하나 생성해줍니다. 생성한 오브젝트를 클릭해보면 Terrain 컴포넌트가 붙여져 있는 것을 확인할 수 있습니다. 터레인의 크기 같은 경우에는 [Mesh Resolution] 탭에서 설정할 수 있습니다. Detail 같은경우에는 최적화와 관련되어 있는 값입니다. [Basic Terrain] 부분입니다. Term Description Draw 지형을 그릴지 여부를 결정합니다. Pixel Error 픽셀 에러는 픽셀이 얼마나 정밀하게 그려질지를 나타냅니다. 값이 높을수록 픽셀의 정밀도가 높아지지만 그만큼 리소스를 많이 잡아 먹기에 적절히 설정해야 합니다. Base Map Dist 모든 맵의 텍스처를 그릴 것..
Occlusion Culling 찍먹하기 큐브를 몇가지 생성해준 다음 [Occluder Static]으로 설정했습니다. 오클루전 컬링기능 사용하기 위해 [Window] -> [Occlusion Culling]을 눌러줍니다. Smallest Occluder Smallest Occluder값을 설정하게 되면 파란색 테두리 영역의 크기가 달라집니다. 파란색 영역은 오브젝트를 Occluder로 인식할 최소 크기입니다. 이 값보다 작은 크기를 갖는 오브젝트는 다른 오브젝트를 가리지 않는다고 판단합니다. 사진 속 파란색 큐브의 높이가 3m이고 Smallest Occluder가 10으로 설정되어 있을 때는 뒤의 빨간색 오브젝트를 가리지 못하게 됩니다. ( 3m < smallest occluder) Smallest O..
설명에 앞서 셰이더 개념에 대해 굉장히 설명을 잘해준(? 솔직히 그냥 내가 올리고 싶었기 때문) 사진이 있어서 가져와봤다 오브젝트의 트랜스폼이 움직인다는 것은 Mesh가 움직이는게 아닌 곧 Vertices들의 이동이라는 점! 셰이더를 하게되면 MVP개념에 대해 알아야 하는데 이 사진이 도움이 된다 점들의 조합으로 메쉬가 되고 모델들만 있는 공간을 Model(Local/Object) Space라고 부른다 화면에 보이는 모든 오브젝트는 카메라를 통해 비춰지게 된다 그 공간을 View(Camera) Space라고 부른다! 꼭 기억해두길 바란다!!!!! 그렇게 카메라에 비치는 것들은 이제 모니터상에 보여지게 되는데 Projection이라는 과정을 거치게 된다!!! 3D공간을 2D화면으로 보여주게 하는! Clip..
[Window] -> [Rendering] -> [Ligthing]을 선택해주자 Ligthing에서 [Enviroment]를 클릭해주면 Other Settings을 펼쳐주고 Fog를 활성화 해주면 된다 가까운곳은 잘보이지만 장소가 먼 곳은 Fog로 인해 잘 보이지 않게 된다 Fog를 사용해서 카메라에 닿지 않는 장소나 보이지 않게 하고 싶은 장소를 가리고 오브젝트등을 비활성화 하는 등 다양한 방식을 통해 최적화에 도움이 될 수 있다(고 한다 맞나?)
코딩을 하다보면 이렇게 Layer를 필요로 할 때가 있다 몬스터의 레이어 순서(번호)가 바뀔 수 있지 않냐? 그럴때마다 monsterLayer의 번호를 바꿔주긴 귀찮으니 LayerMask에 있는 Monster라는 이름의 Layer를 찾아서 번호로 바꾸어주면 된다! LayerMask는 여기서 관리할 수 있다!
https://docs.unity3d.com/kr/530/Manual/SupportedEvents.html 지원되는 이벤트 - Unity 매뉴얼 이벤트 시스템은 다수의 이벤트를 지원하며 사용자가 작성한 입력 모듈을 통해 한층 더 효율적으로 커스터마이징할 수 있습니다. docs.unity3d.com 유니티 공식 홈페이지에서 EventSystem에 들어가 있는 기능들에 대한 설명이다 EventSystem를 사용하기 위해선 상호작용할 오브젝트에 Raycast를 받을 수 있어야 한다
❓Render PipeLine이란? Scene의 내용들을 취하여 컬링(culling), 렌더링(Rendering), 포스트프로세싱(post-processing)등의 작업을 수행하고 그것을 스크린에(모니터) 표시하는 역할을 한다 Unity는 built-in URP, HDRP같은 서로 다른 렌더 파이프라인을 제공한다 📌 built-in URP Unity에 기본적으로 설정되어 있는 Default 렌더 파이프라인이다 SRP(Scriptable Redner Pipeline)에 비해 제한적이다 포워드 렌더링 패스와 디퍼드 렌더링 패스 중 한가지를 선택할 수 있으며 커맨드 버퍼와 콜백으로 기능을 확장할 수 있다 📌SRP(Scriptable Redner Pipeline) SRP를 사용하면 스크립트(Script)로 렌더..
빠밤★ 신기하쥬? 코드는 조만간 리뷰할게유~.~
❓ Profiler란? 성능 분석을 위한 도구이다. 프로그램의 시간 복잡도 및 공간 상태(Memory), 함수 호출 주기와 빈도를 알아낼 수 있다 즉, Profiler를 이용하여 어떤 이유로 프로그램의 성능에 악영향을 미쳤는지 확인할 수 있다 Profiler는 Frame의 변화를 알아볼 수 있으며, 스크립트를 실행하거나 렌더링 작업을 수행하는데 걸리는 시간 등을 볼 수 있다 종류, 작업별로 시간을 모두 분석할 수 있으며 가장 시간이 많이 소요되는 작업부터 순서대로 정렬해서 보여준다 ❓성능 분석을 왜 해야하냐? 최적화가 잘 이루어지지 않은 게임을 하면 쉽게 말해 이른바 "렉"이 심하게 걸린다 성능 분석을 통해 게임의 최적화를 도울 수 있다 ❓ Profiler를 사용하는 방법 상단 [Window] - [An..
ref란? 참조에 의한 매개 변수 전달, 값이 할당된 변수를 사용해야 한다 void Swap(int x, int y) { int temp = y; int y = x; int x = temp; } void main() { int x = 3; int y = 4; Swap(x,y); print(x,y); //결과 x : 3, y : 4 } Swap메서드를 통해 x,y값이 바꾸길 바랬지만 바뀌지 않는다 ref키워드를 매개 변수 앞에 붙여주기만 하면 된다 void Swap(ref int x, ref int y) { int temp = y; int y = x; int x = temp; } void main() { int x = 3; int y = 4; Swap(ref x, ref y); print(x, y); //..
var 키워드란? var 키워드의 기능은 자료형을 자동으로 저장하는 것이다 var 키워드는 지역변수로 사용되어야 하며, 선언과 동시에 초기화 작업을 해야한다 var 100; print("Type : "+ var.GetType()); // 결과 Type : int32 var은 컴파일러가 변수를 생성할 때, 값을 보고 타입을 추론해서 stack 영역에 지정하고 값을 삽입한다 ex) var = 5; 이면 5라는 값을 통해 Type이 int라고 추론함 따라서, int형일 경우 4byte를 stack에 할당받게된다 var a = 5; //4byte var b = 6.6f;//8byte 따라서, int형인 a에 double형인 b의 값으로 덮어쓰려고 하면, a는 4byte의 영역을 할당받았기에 8byte의 영역을 ..
IEnumerator Start() { while (true) { yield return new WaitUntil(() => IsOnJump()); yield return StartCoroutine(JumpTo()); } } private bool IsOnJump() { if (agent.isOnOffMeshLink) { OffMeshLinkData linkData = agent.currentOffMeshLinkData; //OffMeshLinkType Manula = 0, Drop = 1, Jump = 2 if (linkData.linkType == OffMeshLinkType.LinkTypeJumpAcross || linkData.linkType == OffMeshLinkType.LinkTypeDro..
❓ Off Mesh Link란 사다리, 암벽과 같이 수직으로 올라가거나 내려오는 길 절벽 사이를 뛰어서 넘어가거나 낭떠러지 아래로 떨어지는 길과 같이 Mesh가 끊어져 있는 곳을 이동할 수 있께 설정하는 것이다 📖 자동으로 Off Mesh Link 설정하는 방법 Navigation View에서 Object 탭을 선택하고 Genertate OffMeshLinks를 체크한다 그 후 Bake탭에 가서 Drop Height와 Jump Distance 값을 설정한 후 Bake를 눌러 데이터를 저장해주면 된다 📌자동 Off Mesh Link 장단점 더보기 장점 : 게임월드에 배치된 많은 오브젝트의 Off Mesh Link를 한꺼번에 설정 할 수 있다 단점 : 낙하 높이와 점프거리를 하나만 설정할 수 있어 다양한 지..
💡namespace namespace는 클래스들의 묶음이다 namespace를 쓰는 이유는 프로젝트의 규모가 커질수록 각종 이름들의 충돌 발생 가능성을 막아주기 위함이다 namespace 네임스페이스-이름 { class A{} class B{} ... } 💡namespace 사용방법 네임스페이스를 사용하는 방법은 2가지 있다 전체 네임스페이스를 다 적는 방식 using 지시문을 사용하는 방식 UnityEngine.Debug.Log("네임스페이스 호출"); 위와 같이 UnityEngine라는 namespace을 선언해준다음 사용하거나 using UnityEngine; public class Namespaces : MonoBehaviour { void Start() { Debug.Log("네임스페이스 호출"..