본문 바로가기

Unity

Unity: FormerlySerializedAs For Shader 셰이더 프로퍼티 이름 변경시 데이터 보존 방법 유니티에서는 FormerlySerializedAs라는 Attribute를 지원합니다. 유니티 에디터는 어떤 인스턴스(프리팹, 씬)를 저장할 때, 필드의 이름을 기준으로 데이터를 저장합니다. 만약 어떤 변수의 이름을 수정한다면, 이전에 작업해 두었던 수치 정보를 잃게됩니다. FormerlySerializedAs는 이런 상황으로부터 도움을 줄 수 있습니다. https://docs.unity3d.com/ScriptReference/Serialization.FormerlySerializedAsAttribute.html Unity - Scripting API: FormerlySerializedAsAttribute Success! Thank you for helping us improve the quality of.. 더보기
Unity: 리그 오브 레전드 스타일 체력바 만들기 오토 배틀러 장르 개인작 개발중에, 특성상 다양한 캐릭터가 한 화면에 등장하고 최대 체력과 현재 체력을 쉽고 빠르게 식별하기 위해 체력바를 가시성 좋게 고쳐야 할 필요성을 느꼈습니다. 기존에 사용하던 캐릭터 체력바는 간단히 비율만 표기했었습니다. 캐릭터의 체력은 500에서 5000을 넘나드는데, 숫자로 표기하거나 추가적인 창을 띄워 보는것은 덕지덕지 불편할 수 있죠. 그렇다면 기존 게임들은 어떻게 해결하고 있을까요? 리그 오브 레전드는 한 칸당 100을 의미합니다. 전략적 팀 전투는 한 칸당 300을 의미하고요. 스타크래프트는 칸으로 나누었지만, 칸당 수치가 고정되어있지는 않습니다. 수치당 칸과 색으로 표기해서 가시성을 높였습니다. 제가 작업하고자 하는 부분은 셰이더로 체력 셀을 나눠주는 부분입니다. 이.. 더보기
Unity: 특정 기기에서 텍스처가 특정 축으로 반전되어 보일 때 다양한 기기들은 다양한 그래픽 아키텍쳐를 기반으로 구동됩니다. DX, OpenGL, Vulkan, Metal 등 굵직한 것만 해도 4개입니다. 일부 아키텍처끼리는 좌표계와 텍스처 UV에서 (0,0), (1,1)이 위치한 곳이 비슷하게 공유되기도 하지만, 그렇지 않은 아키텍처도 존재합니다. 보통은 빌드세팅에서 Auto API로 대응시 어느정도 해결되지만, 셰이더를 직접 구성한 경우에는 대응을 위해서 셰이더 코드에서 #define 전처리기를 이용해 뒤집어주는 식으로 작업할 수 있습니다. #if UNITY_UV_STARTS_AT_TOP float scale = -1.0; #else float scale = 1.0; #endif o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*s.. 더보기
Unity: 2022.1 IL2CPP 제네릭 공유 개선점이 가지는 의미 Feature preview: IL2CPP Full Generic Sharing in Unity 2022.1 beta | Unity Blog Feature preview: IL2CPP Full Generic Sharing in Unity 2022.1 beta | Unity Blog This code demonstrates the expressiveness of generic virtual methods. In other words, we can send data of any type (the “message”) from any class that implements the IManager interface to any class that implements the IReceiver interface. W.. 더보기
Unity: URP 스냅드래곤 빛 번짐, 스페큘러가 하얗게 타는 현상 보호되어 있는 글입니다. 더보기
Unity: 게임 클라이언트 프로그래머 기술 면접 키워드 리스트 C# 의 이해 언어 스펙 구조체와 클래스 (필드 크기의 합이 16 byte가 넘는 구조체가 Heap 할당이 발생한다는 정보는 잘못되었음에 주의하세요) 인터페이스와 추상, 가상함수 상속과 다형성 배열과 리스트 namespace partial 객체지향(추상화, 캡슐화, 상속성, 다형성) 지역변수와 전역변수 delegate와 event 차이 유니티와 C#의 관계 메모리 힙 할당 되는 케이스와 아닌 케이스 오브젝트 타입에 밸류 타입을 대입하면 생기는 일 박싱과 언박싱 가비지에 대하여 세대별 가비지 컬렉션 LOH, SOH (라지 오브젝트 힙, 스몰 오브젝트 힙) 최신 기능 패턴 매칭 Nullable 유니티에 대한 이해 기능 코루틴과 Invoke 게임루프와 델타 타임에 대한 이해 CLR과 유니티 Mono Mono와.. 더보기
Unity: 헷갈리기 쉬운 에디터 개념. Edit Mode, Play Mode 유니티에디터는 빌드과정을 거쳐 플레이하는 것과 유사하게 빠르게 플레이 테스트를 해 볼 수 있는 Play Mode를 지원합니다. 에디터 상단에 위치한 재생, 일시정지, 다음프레임 심볼의 버튼들이 Play Mode로 넘어가도록 도와주는 주인공들입니다. 요즘에서야 게임엔진이라면 당연히 갖춰야 할 기능으로 받아들여지지만, 초기의 게임 엔진에서는 그렇지 못했고 컴파일과 빌드를 거쳐서야 플레이테스트를 해볼 수 있었습니다. Edit Mode : 유니티 에디터에서 PlayMode 상태가 아닐 때 (평상시) Play Mode : 유니티 에디터에서 Play 중인 상태 (실행 테스트) 에디터에서 빌드를 거쳐 스탠드어론으로 컴파일 된 후 실행되는 것은 플레이모드가 아닙니다. 에디터와 런타임은 대립되는 위치에 있는 용어가 아닙.. 더보기
Unity: 유니티에서 Flutter처럼 작업하기 - uiwidgets 유니티 엔진에서 사용할 수 있는 UI 프레임워크는 다음과 같습니다. 공식 지원 시스템 IMGUI : 런타임 사용에 적절하지 않은 코드기반의 GUI 시스템 uGUI : 가장 점유율이 높은 기본 내장 UI 프레임워크 UI Toolkit : 웹과 유사한 uxml/uss 방식의 UI 프레임워크 에셋 스토어 플러그인 NGUI : 에셋스토어에서 유료로 판매되는 UI 에셋. uGUI가 대중화되기 전에 주로 사용 https://docs.unity3d.com/Manual/UI-system-compare.html Unity - Manual: Comparison of UI systems in Unity Creating user interfaces (UI) Comparison of UI systems in Unity Unit.. 더보기