자가라 노트

Unity 7

[Unity] 컴파일 방식 2) IL2CPP

IL2CPP는 Unity에서 개발한 (스크립팅 백엔드)AOT 컴파일러로, Unity가 스크립트와 어셈블리의 IL코드를 C++ 코드로 변환시켜 선택한 플랫폼에 적합한 네이트브 바이너리 파일로 만듭니다. IL2CPP는 Unity 프로젝트의 성능, 보안 및 플랫폼 호환성을 개선하는 등의 용도로 사용됩니다. 보안관련하여 IL2CPP로 빌드하게 되면 코드가 난독화되어 디컴파일시 코드가 바로 노출되지 않습니다. (최소한의 보안) - 유니티 매뉴얼 Mono의 문제점 C# runtime performance가 C/C++에 비해 여전히 느리다. 최신 버전의 .NET언어를 Mono에서 지원하기 힘들다. 다양한 플랫폼 아키텍처에 맞추기위한 포팅, 유지보수등의 작업에 너무 많은 노력이 든다. 실행 중 GC가 멈출 수도 있다...

Unity 2021.10.10

[Unity][기초] 'Transform어쩌고' 좌표변환

Transform의 멤버함수 중에는 TransformDirection / TransformPoint / TransformVector 시리즈가 있다. 어느날 우연히 봤는데 궁금해서 정리했다. 1. public Vector3 TransformDirection(Vector3 direction); 로컬공간에서 월드공간으로 /direction/을 변환합니다. 이 연산은 transform의 스케일이나 위치에 영향 받지 않습니다. 반환된 벡터는 /direction/처럼 같은 길이를 갖습니다. Transform center; Transform target; center.TransformDirection(target.position); // Rotation없이 사용하게 되면 target의 좌표가 그대로 나온다. // 만..

Unity/기초 2021.08.26

[Unity][기초] Transform 이동

Transform을 이용한 이동에는 간단하게 3가지가 있다. Transform.position / Transform.localPosition / Transform.Translate 1. Transform.position 가장 기본이 되는 방식으로 오브젝트의 위치를 직접 변경해주는 방식. 절대좌표는 월드좌표를 따른다. // 원하는 위치를 직접 대입하거나 Transform.position = new Vector3(1.0f, 2.0f, 3.0f); // 현재위치를 기준으로 이동을 원하는 만큼 추가해주거나 Transform.position += Vector3.up; 2. Transform.localPosition 1번 방식과 대부분 유사하다. 절대좌표는 부모의 (rotation이 기울어져 있다면 기울어진) 좌표..

Unity/기초 2021.08.25

[Unity] Attribute 애트리뷰트

Attribute(속성) 는 class 의 위에 표시 되어, 스크립트 프로퍼티나 함수에 특별한 동작을 나타냅니다. 유니티 - Attribute(속성) 문서 1. 인스펙터 노출 관련 Attribute [SerializeField] 데이터를 직렬화 해주는 기능으로 변수 위 혹은 왼쪽에 선언됩니다. private, protected로 선언된 변수들을 public 변수와 같이 inspector에서 수정가능하게 해줍니다. public과의 차이점 - 사실상 private, protected 선언이기 때문에 다른 클래스에서 접근할 수는 없습니다. public class SomeClass : MonoBehaviour { [SerializeField] private int intValue = 2; [SerializeFi..

Unity 2021.08.13

[Unity]Rendering 렌더링

렌더링 과정 GPU가 메시를 렌더링 하려면 GPU메모리에서 테이터를 읽어올 수 있어야 한다. 로딩시점에 데이터를 메모리에 올려놓고 씬전환 시점등에서 데이터를 해제. 게임중에는 데이터가 상시 메모리에 상주해야 한다. 텍스쳐 쉐이더등 렌더링에 필요한 데이터 모두 GPU 메모리에 존재해야한다. 렌더링 수행전 데이터 로딩 (메시정보를 GPU 메모리에 저장) CPU가 스토리지(HDD, SDD, SD등)에서 파일을 읽어들이고 데이터를 파싱 CPU 메모리에 데이터를 올린다. CPU메모리의 데이터를 GPU메모리로 복사 렌더링 렌더링 루프중 렌더링을 해야하는 시점이 오면 데이터(GPU에 텍스쳐, 버텍스, 쉐이더등)를 순서대로 전달해 줘야하는데 GPU에는 해당 정보들을 담는 테이블, Render State(렌더상태)를 가..

Unity 2021.06.30

[Unity][최적화] Batching, Draw Call, SetPass calls

Batching(배칭) 동일한 메테리얼을 공유하는 복수의 드로우콜을 하나로 묶어서 드로우콜하는 기법 Batching = Draw Call + SetPass calls ▶Draw Call(드로우콜) CPU가 GPU에게 화면에 오브젝트를 그려달라고 요청하는 것 한프레임에서 오브젝트를 하나 그릴때 여러 정보들이 CPU에서 GPU로 전달 DATA > Storage(HDD,SDD,SD) > CPU Memory > GPU Memory 매 프레임 화면에 그려야 하기 때문에 값이 클수록 프레임에 부하가 걸린다. 적정개수 PC : 1000개 이상 가능 ~ 3000개 모바일 : 100개도 많다. 최신 디바이스는 200개까지가능 일반적으로 오브젝트 단위로 1개씩 증가, 쉐이더에 따라서 추가적으로 증가 ▶SetPass cal..

Unity 2021.06.30