Hierarchy란? 게임 장면의 모든 개체를 시각적으로 표현하는 역할을 합니다. Hierarchy 창에는 계층 구조가 트리 구조로 표시됩니다. 계층 구조의 각 개체에는 자식 개체가 있어 부모-자식 관계를 형성할 수 있습니다. 계층 구조의 개체는 캐릭터, 카메라, Light 및 기타 게임 요소와 같은 게임의 다양한 엔터티를 나타낼 수 있습니다. 계층에서 개체의 순서는 장면에서 개체의 렌더에 영향을 미치므로 중요합니다. 계층에서 더 높은 개체는 계층에서 더 낮은 개체보다 먼저 렌더링됩니다. Scene visibility 게임을 제작하다보면 씬에 원치 않은 게임오브젝트를 비활성하는 경우가 종종 생깁니다. 주로, 게임오브젝트를 비활성화하기 위해 Inspector창에서 끄는 것 대신, 씬뷰에서만 보이지 않게 하..
Fog란? 안개는 대기에서 빛의 산란을 시뮬레이션하는 렌더링 효과를 나타냅니다. 간단히 말해서 물체가 멀어지는 듯한 착각을 불러일으켜 게임에 깊이감과 몰입감을 선사합니다. 안개 종류 안개는 Linear, Exponential 및 Exponential Squared의 세 가지 유형을 존재합니다. Linear Fog: 거리에 따라 밀도가 선형으로 증가하는 Fog입니다. 정의된 시작점과 끝점이 있으며 그 사이에서 안개 밀도가 선형으로 증가합니다. Exponential Fog: 거리에 따라 밀도가 점차 증가하며 선형 안개보다 더 자연스럽게 보입니다. Exponential Squared Fog: Exponential 안개와 비슷하지만 밀도가 훨씬 더 빠르게 증가하여 가장 강렬한 형태의 안개가 됩니다. 안개 구현 ..
Animatior Culling Mode란? 개체의 가시성(카메라에 보여지는지)에 따라 애니메이션이 업데이트되고 렌더링되는 시기와 여부를 제어하는 속성입니다. 정리(요약) Culling Mode Pros Cons 적합한 상황 AlwaysAnimate 애니메이션을 계속 재생시킴. 화면 밖의 개체에 대한 처리 리소스를 소모. 연속 애니메이션이 필요한 개체. CullUpdateTransforms 애니메이션 업데이트를 건너뛰어 성능을 최적화. 개체가 보였다가 안보였다가를 자주 반복하면 표시될 때의 깜박임. 시각적 효과에 기여하는 애니메이션이 있는 개체. CullCompletely Animator를 비활성화하여 최고의 성능 최적화. 지연된 애니메이션 업데이트 및 잠재적 깜박임. 객체가 화면에 거의 또는 전혀 보이..
(1) ProjectOnPlane함수설명예시ProjectOnPlane(Vector3 vector, Vector3 planeNormal)vector를 planeNormal에 평면에 투영한 벡터를 반환합니다. 결과 벡터는 plane에 평행합니다.경사면을 따라 이동하는 캐릭터의 움직임을 슬로프의 평면에 투영하여 올바른 이동 방향을 얻습니다. 'ProjectOnPlane(Vector3 Player의 이동방향, PlaneNormal)'은 Plane의 Normal에 수직인 방향의 투영된 벡터를 Return해줍니다.즉, MoveVector는 Plane에 Normal에 수직인 방향(ProjectOnPlane Vector)에 투영된 벡터로 반영됩니다. 즉 '무지(Icon)'가 있는 곳까지가 MoveVector가 됩니다..
Rigidbody Interpolate란? None: 기본 설정이며 최소한의 처리가 필요합니다. 물리 개체가 매우 빠르게 움직이지 않거나 약간의 흔들림이 문제가 되지 않는 게임에 적합합니다. 예를 들어 턴 기반 전략 게임에서는 보간이 필요하지 않을 수 있습니다. Interpolate: 게임의 프레임 속도가 물리 업데이트 속도보다 훨씬 높을 때 물리 개체의 움직임을 부드럽게 만드는 데 유용합니다. 예를 들어 레이싱 게임에서 보간을 사용하여 게임이 높은 프레임 속도로 실행되는 경우에도 자동차의 움직임이 더 부드럽게 보이도록 할 수 있습니다. Extrapolate: 보간에 의해 도입될 수 있는 인지 지연을 줄이려는 경우, 특히 개체가 플레이어 입력에 의해 직접 제어되는 경우에 유용합니다. 예를 들어 플레이어가..
Rigidbody의 'Collision Detection' 이란? 물리 엔진이 객체에 대한 충돌 감지를 처리하는 방법을 결정하는 방식을 뜻합니다. 이 속성에는 네 가지 모드가 있습니다. Discrete: 기본값이며 CPU를 가장 적게 사용하는 옵션입니다. 물리 엔진은 각 물리 시간 단계가 끝날 때만 충돌을 확인합니다. 이로 인해 때때로 빠르게 움직이는 물체가 충돌을 감지하지 않고 다른 물체를 통과하는 "터널링"으로 알려진 문제가 발생할 수 있습니다. Continuous: CPU를 더 많이 사용하지만 빠르게 움직이는 개체에서 터널링을 방지합니다. 물리 엔진은 마지막 물리 타임스텝에서 다음 타임스텝까지 미리 예측하고 해당 시간 동안 객체가 무엇과 충돌하는지 확인합니다. 그러나 정적 콜라이더(비움직이는 물체)..
Color HDR이란? HDR은 High Dynamic Range를 의미합니다. HDR은 색상이 가질 수 있는 색상 및 밝기 값의 범위를 표준 0-1 범위 이상으로 확장합니다. 예를 들어, RGB 색상은 일반적으로 빨강, 녹색 및 파랑 채널 각각에 대해 (0~1) 사이의 값으로 표시됩니다. 예를 들어, 최대로 밝은 빨간색은 (1, 0, 0)입니다. 그러나 HDR을 사용하면 (1,0,0)을 넘어설 수 있습니다. 예를 들어, 매우 밝은 빨간색은 (5, 0, 0)으로 표시될 수 있습니다. ColorUsage 속성 ColorUsage 속성을 사용하여 스크립트의 Color 필드가 Unity 인스펙터에서 HDR을 사용하도록 할 수 있습니다. [ColorUsage(true, true)] public Color hdr..
예제 폰트(쿠키런 폰트!) 쿠키런 폰트 쿠키런 글꼴을 이제 웹에서도 즐기세요. www.cookierunfont.com 위에 가서 폰트를 다운받아줍니다! OTF와 TTF의 차이점 파일 형식: OTF: OpenType 글꼴은 TrueType 글꼴 형식을 기반으로 하지만 추가 기능을 제공합니다. 파일 확장자는 ".otf"입니다. TTF: TrueType 글꼴은 Apple과 Microsoft에서 개발한 표준 글꼴 형식입니다. 파일 확장자는 ".ttf"입니다. 호환성: OTF: OpenType 글꼴은 일반적으로 Windows 및 macOS 시스템과 모두 호환됩니다. Unity를 비롯한 최신 운영 체제 및 애플리케이션에서 광범위하게 지원됩니다. TTF: TrueType 글꼴은 Windows 및 macOS와도 호환됩..
Audio Mixer란?오디오 소스에 대한 제어, 균형 및 동적 조정을 제공하여 리소스 사용을 최적화하여 게임을 즐기는 유저의 오디오 경험을 향상시킬 수 있습니다.Audio Mixer를 사용해야 하는 이유오디오 제어 및 균형 조정: Audio Source의 레벨과 균형을 세밀하게 제어할 수 있습니다. Audio Source의 볼륨을 조정하고 패닝을 적용하여 스테레오 필드의 사운드 위치를 지정하고 다양한 오디오 요소의 전체 믹스를 제어할 수 있습니다. 효율적인 리소스 관리: 유사한 Audio Source를 Audio 그룹으로 그룹화하여 볼륨을 제어하고 효과를 적용하고 전체적으로 조정할 수 있습니다. Audio Source개별적으로 처리하는 성능 오버헤드를 줄입니다.동적 오디오 변경: 스냅샷과 노출된 매개변..
Reset 함수란? MonoBehaviou를 상속받은 함수로, 에디터 모드에서 Reset 버튼을 클릭하거나 해당 컴포넌트를 추가할 때 자동으로 호출됩니다. Reset 함수를 사용하는 이유 Reset 함수의 주요 목적은 컴포넌트를 초기 상태로 재설정하거나 변수를 초기화하는 것입니다. 예를 들어, 게임 캐릭터에 사용될 컴포넌트를 만들었다고 가정해보겠습니다! 초기 상태로 설정해야 할 변수나 속성이 있다면 Reset 함수 내에서 해당 값을 초기화하면 됩니다. 예를 들어, 캐릭터의 Position, 캐릭터의 Hp, Speed 등이 있겠죠! Reset 함수는 에디터 모드에서만 호출되므로 Runtime에서는 영향을 주지 않습니다. private void Reset() { _grabbable = this.GetComp..
주석을 사용하는 경우 주석을 사용하는 경우는 다음과 같습니다! API 설명서: 클래스, 메서드, 속성 및 이벤트와 같은 공용 API를 문서화하는 데 사용됩니다. 매개 변수, 반환 값 및 예외에 대한 명확한 설명, 사용 지침 및 세부 정보를 제공하는 데 도움이 됩니다. 잘 문서화된 API를 사용하면 다른 개발자가 코드를 더 쉽게 이해하고 사용할 수 있습니다. 코드 유지 관리: 시간이 지남에 따라 코드를 유지 관리하기 위한 귀중한 자체 문서 역할을 합니다. 코드에 주석을 추가하여 특정 섹션의 목적을 설명하거나, 복잡한 알고리즘 또는 계산에 대한 통찰력을 제공하거나, 특정 디자인 결정의 근거를 설명할 수 있습니다. 이는 미래의 개발자(자신 포함)가 코드베이스를 더 잘 이해하고 수정하는 데 도움이 됩니다. 협업..
Remap이란? 값을 한 범위에서 다른 범위로 쉽게 매핑할 수 있게 해주는 함수입니다. 선형 보간법을 사용하여 입력 범위 내에서 입력 값의 위치를 기준으로 출력 범위에서 해당 값을 계산합니다. public static float Remap(float value, float inputMin, float inputMax, float outputMin, float outputMax) { return outputMin + (value - inputMin) * (outputMax - outputMin) / (inputMax - inputMin); } 주의 inputMax값이 Value보다 낮을 경우 의도한 값이 나오지 않습니다!(즉, value값이 inputMin과 inputMax 사이에 존재해야한다는 뜻입니..
런타임에 사용되는 Graphics API를 확인하는 방법 void Start() { GraphicsDeviceType activeAPI = SystemInfo.graphicsDeviceType; Debug.Log("Active Graphics API: " + activeAPI); } 코드를 작성하고 빈오브젝트를 생성 후 거기에 부착해준 다음 플레이해보면 됩니다! 결과 현재 Graphics API는 Direc3D11을 사용하고 있음을 확인할 수 있습니다!
Point FilteringPoint Filtering은 렌더링 시 각 화면 픽셀에 가장 가까운 텍셀(텍스처 픽셀)을 선택합니다.텍스처 픽셀이 화면 픽셀에 직접 매핑되므로 고르지 않고 픽셀화된 모양을 제공합니다.Point Filtering은 계산적으로 효율적이지만 상대적으로 매끄러운 연출에 있어서는 부족합니다. Bilinear FilteringBilinear Filtering은 각 화면 픽셀에 가장 가까운 4개의 텍셀의 가중 평균을 취하여 포인트 필터링을 개선합니다.텍셀의 위치를 기준으로 색상 값을 보간하여 픽셀 간의 전환을 부드럽게 합니다.Bilinear Filtering은 Point Filtering에 비해 시각적으로 더 매끄러운 모양을 만듭니다. Trilinear FilteringTrilinea..
BrustCompile란? "BurstCompile"은 코드의 특정 부분을 고도로 최적화된 기계 코드로 컴파일하여 성능을 크게 향상시키는 기술입니다. BurstCompile을 사용하는 경우의 실질적인 예는 물리 시뮬레이션과 같이 많은 양의 데이터를 처리해야 하는 게임입니다. 모래시계 안의 모래처럼 수천 개의 입자의 움직임을 시뮬레이션하는 게임을 만들고 있다고 가정해 보겠습니다. 각각의 입자들은 중력과 다른 입자들과 충돌하는 것과 같은 힘에 반응하면서 물리학의 법칙을 따라야 합니다. BurstCompile을 사용하지 않으면 각 프레임에 작용하는 힘을 기준으로 새 위치를 계산하여 모든 입자에 루프하는 Update 함수를 작성할 수 있습니다. 사용 예시 using Unity.Burst; using Unity...