게임엔진/Unity
[Unity] 스프라이트 렌더러 속성 (Sprite Renderer)
#3 Unity 스프라이트 렌더러 속성 (Sprite Renderer) (tistory.com)
[Unity] 폴더 관리
유니티 폴더 관리 규칙 Plugins, Editor, Resources 는 유니티에서 정해논 기능이 있으므로 다른 용도로 사용할수 없으며, Assets/Scripts/Editor 와 같은 경우로도 사용해서는 안된다. 또한 자동으로 생성된 Editor,Plugins 폴더를 삭제 해서는 안된다. #1 Unity 폴더 관리 (tistory.com)

[Unity] Cinemachine Confiner change - 시네머신 confiner 변경
유니티 내에서 제공하는 시네머신의 속성중 Confiner에서 Bounding Shape 2D를 스크립트에서 제어하는 방법이다. 이를 이용하면 시네머신 1개의 영역을 런타임중 동적으로 할당할 수 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine; public class ConfinerChange : MonoBehaviour { public static ConfinerChange confinerChangeInstance; public static CinemachineConfiner confiner; void Awake() { confinerChangeInstance = this;..

[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 calls..

[Unity] 생명 주기
Reset : 오브젝트를 생성 후 인스펙터 뷰에서 리셋을 눌러줄 때 실행된다. 객체의 속성을 초기 값으로 설정해 줄 때 사용한다. Awake : 스크립트가 실행될 때 한번만 호출된다. 모든 오브젝트가 초기화 된 후 호출되기 때문에 GameObject.Find 같은 명령문을 안전하게 사용할 수 있다. Awake 함수는 언제나 Start 함수 전에 호출되므로 초기화 순서를 정할 수 있게 한다. (Coroutine 사용 불가) OnEnable : 인스펙터뷰에서 체크를 통해서 게임 오브젝트를 활성화 할 때 사용된다. 활성화 할 때마다 호출 된다. Start : Update 함수가 호출되기 전에 한번만 호출된다. 다른 스크립트의 모든 Awake가 모두 실행된 이후에 실행된다. 스크립트가 활성화 되어 있어야한다. ..

[Unity] Mono 분석
Mono .NET Framework가 매우 유용한 개발환경이지만, 환경에 상관없이 Windows 프로그램을 구동시키자는 취지로 개발되었기 때문에 Windows 환경에만 제한되어 있었다. 이에 오픈 소스 개발자 그룹은 Linux/Mac 등의 Windows 환경 외에서도 .NET Framework를 사용하기 위해 Mono 프로젝트를 시작하였다. .NET Framework는 오픈 소스 프레임워크가 아니었기 때문에 ECMA International(국제 표준 기구)에 등록된 .NET Framework의 CLI를 분석하여 구현했다고 한다. 현재 Microsoft는 .NET Framework를 오픈 소스로 공개했을 뿐만 아니라, Mono의 메인테이너인 Xamarin을 인수하고, .NET Core라는 Windows,..

[Unity] 애니메이션 타입 legacy로 변경하기
1) 외부에서 import한 모델의 경우 import settings의 rig탭에서 애니메이션 타입을 선택할 수 있다. 2) 유니티에서 애니메이션을 생성한 경우에는 다른 방법으로 애니메이션 타입을 변경 해야한다. 아래 예에서 오브젝트의 애니메이션을 생성하였다. 3) controller와 anim파일이 생성되었고 4) 오브젝트에 animator 컴포넌트가 추가된 것을 확인할 수 있다. 5) 이 게임 오브젝트의 애니메이션 타입을 legacy로 변경하려면 먼저 인스펙터에서 아래이미지 우측상단에 표시한 아이콘을 클릭하고 debug를 선택한다. 6) 애니메이션(text.anim)를 선택하고 legacy에 체크하면된다(이 항목은 debug모드에서만 확인가능하다) 유니티에서 애니메이션 타입 legacy로 변경하기 (..

[Unity] 그래픽스 최적화 - 드로우콜과 배칭
01. Draw Call 드로우콜은 수많은 병목 중 하나의 원인일 뿐,, 반드시 병목이 드로우콜에서 일어난다고 단정지어서는 안됨. 드로우콜이 강조되는 이유는 대부분 병목의 원인이 드로우콜에 있기 때문. 드로우 콜이란? CPU가 GPU에게 이거 그려! 하고 명령을 호출하는 것. 더 자세하게 ? 한 프레임의 렌더링은 매 오브젝트를 순차적으로 그려주면서 오브젝트를 다 그리면 화면에 보여지게 되는 것. 오브젝트를 화면에 렌더링하기 전에 우선 해당 오브젝트가 렌더링 대상에 포함되는지 체크한다. 현재 프레임 상에서 해당 오브젝트가 카메라의 시야 밖에 있다면 안 그려도 되는 것이므로 렌더링 대상에서 제외한다. 이런 검사 과정을 Culling이라고 한다. 컬링을 거친 오브젝트가 렌더링되려면 CPU로부터 GPU에게 정보..