Unity/작업방식 썸네일형 리스트형 Unity: 에디터 환경에서 활성화 된 윈도우 최대화 단축키 Shift + Space 키로 에디터 뷰의 전체로 확대가능합니다. 더보기 Unity: Workflow. 자주 사용되는 싱글톤 패턴 Singleton 한 번의 객체 생성으로 전역성을 띄고 어디서든 접근이 가능하기 때문에 편리하게 사용되나 필수적으로 커플링이 생긴다는 점에서, 남용하지 않는 선을 지켜 적당히 사용하게 됩니다. 게임 아키텍쳐가 매우 복잡하고 크지 않는 이상 10개가 넘는 싱글톤 객체가 생기는 일은 잘 없고, 필요한 매니저 클래스들 정도만 활용하는 편입니다. 유니티에서는 MonoBehaviour를 상속받는 컴포넌트를 토대로 구조가 쌓이기 때문에, MonoBehaviour를 위한 싱글턴 템플릿 클래스를 만들어두면 편리합니다. 그래서 제가 자주 사용하는 싱글톤 클래스들 코드를 기록해두려고 합니다. 1. 일반 클래스 싱글톤 템플릿 데이터 DB나 리소스를 관리해주는 클래스, 또는 MonoBehaviour의 인스펙터 기능이 필요 없이 코드로만 동작하.. 더보기 Unity: Workflow. 네비게이션 시스템 베이킹시 갭이 발생할 때 기본 설정으로 네비 메쉬를 굽고 캐릭터를 올려보면 캐릭터가 바닥에서 발이 떨어져있는듯한 모습을 보여주기도 합니다. 네비게이션 메쉬를 생성할 때 사용하는 복셀 크기때문에 그런데요, 옵션에서 복셀 크기를 적당히 줄여주면 비교적 정확하게 베이크가 됩니다. 너무 크기를 줄여버리면 시간이 과도하게 오래걸릴 수 있으니 감당할 수 있는 수준에서 조절하면 됩니다. 바닥에 신발이 붙은 것 처럼 수치를 조절할 수 있었습니다. 더보기 Unity: Workflow. 코드 레벨에서 사용중인 렌더 파이프라인 특정하기 2 이전 글에서 GraphicsSettings.currentRenderPipeline 의 이름을 참조하여 현재 렌더링 파이프라인을 확인하는 코드를 작성했었습니다. 2021.05.05 - [유니티] - 유니티: 8. 코드레벨에서 사용중인 렌더 파이프라인 특정하기 유니티: 8. 코드레벨에서 사용중인 렌더 파이프라인 특정하기 GraphicsSettings.currentRenderPipeline API를 이용하면 현재 사용중인 렌더링 파이프라인 에셋을 가져올 수 있습니다. 하지만 빌트인 렌더러를 사용하고 있는 경우, URP나 HDRP 패키지를 임포트 하지 않아 스 seonghwan.tistory.com 그런데 오늘 URP 코드를 둘러보다가 Shader.globalRenderPipeline이라는 string 프로퍼티.. 더보기 Unity: Workflow. 유니티 에디터 종료 확인 문구 유니티 에디터를 의도치 않게 꺼버릴 때가 있습니다. 다른 브라우저를 끄거나, 클릭 미스로 꺼버리는 경우가 있죠. 프로젝트가 작다면 금방 다시 키는게 큰 문제가 되지 않지만, 로딩 시간이 오래 걸리는 경우 의도치 않은 에디터 종료가 부담스러울 수 있습니다. 간단하게 에디터 콜백을 추가해 다이얼로그 박스를 한 번 더 띄우도록 구현해보겠습니다. using UnityEditor; public class EditorQuitHandler { [InitializeOnLoadMethod] private static void Register() { EditorApplication.wantsToQuit += OnWantsToQuit; } private static bool OnWantsToQuit() { return Ed.. 더보기 Unity: Workflow. Text 추가 효과 적용 - Deformer uGUI와 TextMeshPro 모두에서 사용가능한 Text 컴포넌트 애니메이터를 만드려고 uGUI 코드와 TMPro 코드를 읽어보던 중 BaseMeshEffect 컴포넌트를 이용한 효과 주입이 가능함을 발견했습니다. uGUI 패키지에 포함되어있는 Outline, Shadow 컴포넌트인데요. BaseMeshEffect를 이용해 추가적인 효과를 더해주는 기능을 제공합니다. 이를 참고해서 Mesh 버텍스를 랜덤하게 이동시켜 글자가 꿈틀거리는 효과를 만들었습니다. 기능 구현을 확인했고, 다른 이펙트와 겹쳐 사용이 가능한지 확인도 했습니다. 단순히 생성된 메쉬의 버텍스 위치만 옮겨주는 거다보니 크게 문제는 없을거라 생각했습니다. 그림자(Shadow)와 외곽선(Outline)효과도 문제없이 함께 적용됩니다. 프로.. 더보기 Unity: Workflow. ListPool<T> 리스트 풀 유니티 uGUI 코드를 살펴보다가 ListPool을 사용하는 부분을 발견했습니다. 주로 Mesh가 업데이트 되어야 할 때마다 버텍스를 관리해줄 때 리스트가 사용됩니다. 매번 리스트를 만들고 사용하면 그 동작이 얼마나 자주 진행되는지에 따라 메모리 누수로 인한 CPU Spike가 발생할 수 있습니다. 이를 방지하기 위해 uGUI 코드에서 internal로 사용되던 자료구조입니다. 구현은 위와 같이 되어있으며 2021.1 버전부터 public 으로 사용할 수 있게 접근제한이 풀렸습니다. uGUI의 Text 컴포넌트에서 사용되는 VertexHelper 클래스는 이를 리스트풀을 이용해 구현했습니다. 조심해야 할 점은 Release를 제대로 시켜주지 않으면 되려 메모리에 악영향을 줄 수 있다는 것입니다. 명시적으.. 더보기 Unity: Workflow. 셰이더 그래프에서 단축키 사용하기 (2) 이전 글에서 이어집니다. 셰이더 그래프 패키지를 수정해볼까 싶었는데, 상당히 폐쇄적인 접근제한자로 보호되고 있어 액세스조차 불가했습니다. 이전 글에서 소개드린 포럼의 글의 날짜가 3월~4월 부근이기에 얼마 되지 않은 따끈따끈한 스레드인줄 알았습니다. 그래서 굳이 작업하지 않고 패키지를 수정해서 사용하다보면 금방 업데이트 되겠구나 싶었죠. 그러나 2020년 3~4월에 활발이 대화가 오고가다 2021년 4월이 되어 아직도 단축키 기능이 없다는 불평이 달렸다는걸 뒤늦게 알아챘습니다. 1년동안 전혀 변화가 없다니... 어쩌면 영원히 개발되지 않을지도 모른다는 생각이 들었습니다. 셰이더 그래프 패키지 코드를 수정하지 않고 기능을 집어넣을 방법이 없을까 고민을 해봤습니다. 그 결과 리플렉션을 이용해서 모든 필드에 .. 더보기 이전 1 2 3 다음