Debug.Log 유틸리티 만든 이유 팀 프로젝트를 하다 보면 팀원의 Debug.Log가 많아서 내가 작성한 Log를 찾기 힘든 경우가 종종 발생합니다. 그런 경우 주로, Log에 색을 입히든가 bold 체를 만들어 Text를 진하게 만들든가 해서 Log을 찾습니다. Debug.Log($"안녕하세요! {value}입니다!"); Log의 색을 red로 바꾸기 위해 위 코드처럼 Debug문을 작성하는데요. 원하고자 하는 Log가 한 가지면 위에 처럼 작성해서 상관이 없지만 원하는 Log가 여러 개일 경우 을 매번 치는 건 귀찮은 작업이 될 수 있다 판단했습니다. 그래서 Debug.Log 유틸리티 함수를 만들었고 소개해보고자 합니다! 아직은 기능이 몇가지 없지만 좋은 아이디어가 생각날 때마다 유틸리티 함수를 ..
UnityEvent 란? 인스펙터에서 이벤트를 노출하는 방법을 제공하여 디자이너와 개발자가 그래픽 인터페이스에서 작업을 할당할 수 있도록 합니다. UnityEvent의 일반적인 사용법은 다음과 같습니다. using UnityEngine; using UnityEngine.Events; public class MyComponent : MonoBehaviour { public UnityEvent myEvent; private void Awake() { if (myEvent == null) myEvent = new UnityEvent(); myEvent.AddListener(SomeFunction); } public void TriggerEvent() { myEvent.Invoke(); } private voi..
내용 https://www.oculus.com/experiences/rift/2465382086809441/?locale=ko_KR Oculus Rift의 Angry Birds VR: Isle of Pigs | Oculus www.oculus.com 욕심쟁이 녹색 돼지들이 휴식을 취하는 외딴섬에서 재미있는 104개의 스테이지를 플레이하거나 레벨을 직접 디자인해서 친구와 함께 즐길 수도 있습니다. Angry Birds VR: Isle of Pigs 커뮤니티에는 유저들이 직접 만든 레벨 스테이지가 17,000가지나 있어 목표로 삼을 타워와 터트릴 돼지들이 잔뜩 있습니다! 별점(5/5) 좋았던 점 앉아서 쉽게 플레이할 수 있다는 점. 추억을 잘 살려낸 게임이라는 점. 어렵지 않아 손쉽게 클리어할 수 있다는 점..
GetOrAddComponent란? 게임 개체에 특정 컴포넌트를 가져오거나 컴포넌트가 존재하지 않는 경우 게임 개체에 컴포넌트를 추가하는 편리한 유틸리티 메서드입니다. 컴포넌트를 수동으로 확인 및 추가하지 않고 게임 개체에 컴포넌트가 있는지 확인하려는 경우 일반적으로 사용됩니다. using UnityEngine; public static class ComponentExtensions { public static T GetOrAddComponent(this GameObject gameObject) where T : Component { T component = gameObject.GetComponent(); if (component == null) { component = gameObject.AddComp..
Vector3 incoming = new Vector3(1, 1, 0); Vector3 normal = new Vector3(0, 1, 0); Vector3 normal_flipped = new Vector3(0, -1, 0); Vector3 reflected = Vector3.Reflect(incoming, normal); Vector3 reflected_flipped = Vector3.Reflect(incoming, normal_flipped); Debug.Log(reflected); // Output: (1, -1, 0) Debug.Log(reflected_flipped); // Output: (1, -1, 0) Vector3.Reflect란? 지정된 법선을 사용하여 표면을 벗어난 벡터의 반사를 계..
RenderTexture란? Render Texture는 렌더링 작업에 사용되는 특수 유형의 텍스처입니다. 장면, 개체 또는 후처리 효과를 화면 밖에서 렌더링할 수 있습니다. 다양한 영역을 모니터링할 수 있는 보안 카메라 시스템을 만들고 싶을 때 Render Texture을 사용할 수 있습니다. 이번 포스팅에서는 간단하게 해당 장면을 캡쳐한 후 png파일로 폴더에 저장하는 방법에 대해 배워보고자 합니다. 카메라 세팅 유니티 MIRROR(거울) 구현하는 방법 빈오브젝트를 하나 생성해준다빈오브젝트 자식으로 quad를 하나 생성해준다스케일을 9: 16으로 설정해주고(입맛대로 변경하면 됨, 단!! Render Texture 해상도도 여기에 맞게 해줘야함) Scale을 줄인다 wlsdn629.tistory.com..
Layer 충돌 무시 2가지 종류 1. 에디터 Project Setting을 이용하는 방법 2. 스크립트를 사용하는 방법 에디터 Project Setting을 이용하는 방법 무시하고 싶은 Layer간에 체크를 해제해준다. 스크립트를 사용하는 방법(Physics.IgnoreLayerCollision) using UnityEngine; public class CollisionManager : MonoBehaviour { public void IgnoreCollision(string layer1, string layer2, bool ignore) { int layer1Index = LayerMask.NameToLayer(layer1); int layer2Index = LayerMask.NameToLayer(l..
LayerMask란?레이어 기반 작업을 단순화하는 기능입니다. 32비트 정수로 표시되는 Bit Mask를 사용하면 특정 레이어에서 대상 작업을 필터링하고 수행할 수 있습니다. LayerMask 함수LayerMask.GetMask원하는 레이어의 이름을 지정하여 LayerMask를 구성합니다. 예를 들어 LayerMask.GetMask("Player", "Enemy")를 사용하여 "Player" 및 "Enemy" 레이어를 모두 포함하는 LayerMask를 만들 수 있습니다. LayerMask.GetMask의 목적은 원하는 레이어의 이름을 지정하여 '비트마스크를 생성'하는 것입니다. Index가 0부터 시작하여 지정된 각 레이어에 대해 1씩 증가하는 인덱스를 레이어에 자동으로 할당합니다. 예를 들어, "Pi..
대표 이미지 사진은 저의 귀여운 게임 캐릭터 땃쥐랍니다 ㅎㅎ PlayClipAtPoint AudioSource.PlayClipAtPoint 함수는 게임 내의 '특정 위치'에서 오디오 클립을 재생할 수 있는 함수입니다. AudioSource 컴포넌트를 게임 오브젝트에 부착하는 방식과 달리 이 기능은 사운드 재생에 더 많은 유연성을 제공합니다. PlayClipAtPoint를 사용하는 이유 Spatial Audio : 게임 내에 특정 위치를 지정하여 공간 오디오 효과를 생성할 수 있습니다. 소리가 특정 지점에서 나오는 것처럼 보이게 하여 플레이어를 몰입시켜 사실감과 깊이를 향상시킬 수 있습니다. 오디오 분리: 게임 개체에서 오디오 재생을 분리하여 오디오 소스 관리를 단순화하고 특정 개체의 위치 또는 수명 주기..
Cloth 컴포넌트란? Cloth는 천과 같은 동작을 시뮬레이션하는 데 사용되는 컴포넌트입니다. Cloth컴포넌트를 이용하여 중력, 바람 및 충돌과 같은 외부 힘에 반응하는 사실적인 fabric, flag, 배너 및 천(Cloth)과 같은 개체를 만들 수 있습니다. 결과 귀여운 땃쥐가 천에 부딪히면 천이 흔들리는 것을 볼 수 있다! Docu https://docs.unity3d.com/kr/2018.4/Manual/class-Cloth.html 천 - Unity 매뉴얼 천(Cloth) 컴포넌트는 스킨드 메시 렌더러와 함께 작동하여 직물을 시뮬레이션하는 물리 기반 솔루션을 제공합니다. 이 컴포넌트는 캐릭터의 옷에 사용하도록 특별히 고안되었고 스킨드 메시만 docs.unity3d.com
Hierarchy란? 게임 장면의 모든 개체를 시각적으로 표현하는 역할을 합니다. Hierarchy 창에는 계층 구조가 트리 구조로 표시됩니다. 계층 구조의 각 개체에는 자식 개체가 있어 부모-자식 관계를 형성할 수 있습니다. 계층 구조의 개체는 캐릭터, 카메라, Light 및 기타 게임 요소와 같은 게임의 다양한 엔터티를 나타낼 수 있습니다. 계층에서 개체의 순서는 장면에서 개체의 렌더에 영향을 미치므로 중요합니다. 계층에서 더 높은 개체는 계층에서 더 낮은 개체보다 먼저 렌더링됩니다. Scene visibility 게임을 제작하다보면 씬에 원치 않은 게임오브젝트를 비활성하는 경우가 종종 생깁니다. 주로, 게임오브젝트를 비활성화하기 위해 Inspector창에서 끄는 것 대신, 씬뷰에서만 보이지 않게 하..
특정 클라이언트에게 데이터 전송하기 기본적으로 Netcode에서 제공하는 ClientRpc는 모든 클라이언트에게 데이터를 전송하는 방식입니다. 하지만 경우에 따라서는 '특정' 클라이언트에게만 데이터를 전송해야 할 때가 있습니다. 이럴 때 사용할 수 있는 것이 바로 ClientRpcSendParameters입니다! 아래는 ClientRpcSendParameters를 이용하여 특정 클라이언트에게만 데이터를 전송하는 예제 코드입니다. private void DoSomethingServerSide(int clientId) { if (!IsServer) return; // 주의! 미리 알고 있는 ClientId 리스트가 있고, 변경이 필요 없는 경우, // 이 함수를 실행할 때마다 메모리 할당을 피하기 위해 이를..
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를 비활성화하여 최고의 성능 최적화. 지연된 애니메이션 업데이트 및 잠재적 깜박임. 객체가 화면에 거의 또는 전혀 보이..