본문 바로가기
반응형

Unity9

Awake()와 Start()의 차이 개요 Awake(), Start()는 MonoBehaviour에서 파생된 클래스의 이벤트 함수이다. 기본적으로 Awake()→Start()로 진행되며 초기화와 관련이 있다는 것은 모두 알고 있을 것이다. 그렇다면 Awake(), Start()함수들이 한 번에 사용해도 되는데 왜 구분을 하였을까? 차이점부터 알아보자. Awake()와 Start()의 차이 Awake()는 해당 스크립트가 있는 오브젝트가 초기화 될 때 호출된다. Start()는 Update가 실행되기 전 첫 프레임에 호출된다. 초기화를 위해서 Awake()만 실행하면 되지 않을까 생각되지만 그렇지 않은 이유가 있다. 컴포넌트 참조 문제 Awake는 실행이 될 때, 각 오브젝트들의 Awake()가 언제 실행될지 모른다. Awake()에서 참조.. 2022. 7. 25.
Physcis.CheckBox와 OnTriggerEnter Physcis.CheckBox 해당 함수가 포함되어 있는 오브젝트는 다른 콜라이더와 겹치는지를 확인한다. 리턴 값은 bool로 겹침 여부만 반환한다. 박스 콜라이더를 추가하지 않고도 특정 레이어와 겹침여부를 확인을 할 수 있으며 오브젝트와 순간적인 판정에 사용하면 좋다. 사용방식 Physics.CheckBox(Vector3 center,Vector3 halfExtents,Quaternion orientation=Quaternion.identity,int layerMask = DefaultRaycastLayers) center 박스의 중심 halfExtents 박스 길이의 절반 orientation 박스의 회전 layermask 충돌했을 때 무시할 레이어 단점 설정된 범위는 시각적으로 보이지 않기 때문에 .. 2022. 6. 10.
Draw call은 무엇일까 오브젝트를 그릴 때 정보들(정점의 위치, normals, color 등)을 GPU로 보낸다. 이 정보들을 가지고 카메라 frustum안에 존재하는 오브젝트를 그린다. GPU에 위의 정보들이 들어간다. 데이터를 VRAM으로 전송한다. 화면에 오브젝트를 그리도록 요청한다. 오브젝트를 그리는 과정이 실행되며 이러한 과정을 “Draw Call”이라고 한다. 특징 셰이더가 많이 패스되면 렌더링을 할 때 많은 draw call이 발생한다. 하나의 패스 = 하나의 draw call이다. 이 의미는 패스의 개수는 draw call의 개수와 동일하다. 2022. 4. 4.
ShaderLab 알아보기 SubShader 각 셰이더는 최소 한개의 SubShader를 가진다. 지원이 되는 API: SubShader가 실행됩니다. 지원이 되지 않는 API: Fallback 컴포넌트를 활용해 그래픽 에러 없이 실행이 될 수 있도록 합니다. Shader "Unlit/Drawers" { Properties { ... } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { ... } } } Tags 셰이더가 어떤방식으로 언제 진행되야할지 알려주는 라벨이다. 사용방식 SubShader 내부에서 사용 모든 pass에 영향을 준다. pass 내부에서 사용 해당 pass만 영향을 받는다. SubShader { 1. Tags { "RenderType"="Opaque" } .. 2022. 3. 31.
[Material property drawer(4)] PowerSlider , IntRange 사용하기 이 drawer들은 수치범위와 정밀도 작업에 유용합니다. PowerSlider 곡선형태로 제어되는 비선형 슬라이더이다. IntRange 수치범위를 정수로 표현한다. Properties { [PowerSlider(3.0)] _Brightness("Brightness",Range(0.01,1)) =0.05 [IntRange] _Sample("Samples",Range(0,255)) = 50 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { float _Brightness; float _Samples; ... ENDCG } Inspector에서 표현 2022. 3. 30.
[Material property drawer(3)] Enum 사용하기 Enum KeywordEnum가 비슷하지만 인자로 value/id로 구성되어있다. 이 프로퍼티는 인스펙터 상에서 동적으로 기능을 변경할 수있도록 셰이더 내부의 명령어로 전달한다. Properties { //Enum(Value0,Id0,Value1,Id1,etc...) [Enum(Off,0,Front,1,Back,2)] _Face("Culling",Float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull [_Face] Pass { ... } ENDCG } } 주로 Cull명령어에서 찾아볼 수 있다. “_Face” Enum타입 프로퍼티를 선언하여 사용한다. Inspector창에서 수정이 가능한 Enum타입의 프로퍼티 2022. 3. 27.
반응형