본문 바로가기

유니티

[C#] Enum의 모든 값 가져오기 https://docs.microsoft.com/ko-kr/dotnet/api/system.enum.getvalues Enum.GetValues 메서드 (System) 지정된 열거형에서 상수 값의 배열을 검색합니다.Retrieves an array of the values of the constants in a specified enumeration. docs.microsoft.com 사용자가 정의한 Enum을 모두 가져와 루프를 돌고 싶을 때가 있다. Enum.GetValules(Type type) 메서드를 이용해 배열로 받아 올 수 있다. foreach를 사용하는 경우 해당 타입으로 public enum EGameState { None, Wait, PreBattle, InBattle, PostBatt.. 더보기
Unity: UniRx로 NavMeshAgent의 도착 콜백 생성하기 neuecc/UniRx: Reactive Extensions for Unity (github.com) neuecc/UniRx Reactive Extensions for Unity. Contribute to neuecc/UniRx development by creating an account on GitHub. github.com 내장된 NavMeshAgent에는 따로 도착 콜백이 존재하지 않아 UniRx를 이용해서 임의로 콜백을 호출하도록 구현했습니다. 멈춘상태인지를 판단하는 IsStopped 함수를 만들고, Start에서 Update루프에서 확인하도록 등록해주었습니다. public class PlayerCharacter: Character { public NavMeshAgent agent = defau.. 더보기
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 프로퍼티.. 더보기
언리얼 vs 유니티: 3. 에셋 참조 방식 에셋 간에도 의존성이 존재합니다. 유니티의 머티리얼은 사용되는 텍스쳐들의 주소를 알고 있어야 하고, 메쉬역시 머티리얼의 주소를 알고 있어야 합니다. 언리얼과 유니티는 이 과정에서 다른 컨셉을 갖고 있습니다. 쉬어가는 느낌으로 간단히 알아보겠습니다. 유니티 유니티는 에셋을 참조할 때 guid를 사용합니다. 프로젝트 설정의 에디터 파트에서 Serialization을 Text 모드로 사용하게 되면, meta 파일을 텍스트 편집기로 열 수 있습니다. 매우 정직하게 guid: xxxx... 로 표기되어있습니다. 이 메타파일은 텍스쳐의 메타입니다. 이 텍스쳐를 사용하게되면, 이 guid를 저장하게됩니다. 예를 들어 이 텍스쳐를 사용하는 RawImage 컴포넌트가 있는 씬을 텍스트 편집기로 열어보면 이 guid를 발.. 더보기
언리얼 vs 유니티: 2. 에셋 관리 방식 게임을 만들기 위해서는 다양한 리소스가 필요합니다. 캐릭터 모델링 메쉬, 모델링의 겉모습을 표현해 줄 텍스쳐, 리깅 된 모델링을 움직여 줄 애니메이션, 글자를 그리게 해 줄 폰트 등등. 이들은 게임엔진에서 사용하려면 일련의 과정을 거쳐야만 합니다. 복잡한 과정들을 간단히 요약하자면, 범용적으로 통용되는 파일 포맷으로 저장된 데이터들을 엔진에서 메모리에 로드 가능한 형태의 에셋으로 변환해주는 작업들입니다. 프로젝트가 개발중인 단계에서는 로딩 속도나 수정, 개발 사이클과 관련해 어떻게 전략을 수립할 것인지가 마일스톤 일정을 맞추는 데에 비중있는 역할을 차지하기도 합니다. 유니티 에셋을 프로젝트에 임포트하더라도 원래의 파일을 그대로 유지하고있습니다. 이미지 파일 포맷인 PNG, TGA, BMP 등을 프로젝트내.. 더보기
언리얼 vs 유니티: 1. 우열을 가리기보다는 작업상 차이점을 중심으로 유니티와 언리얼의 기능과 사용 방법, 철학을 비교해봅니다. 파트별로 나누어서 시간이 될 때 마다 소소하게 작성할 예정입니다. ​ 우열을 가리려는 것이 아닌 기능상의 비교, 타 엔진으로 넘어갈 때 유의해야 할 사안 등을 중점적으로 기술합니다. 저는 두 엔진 모두를 다루어보긴 했지만 깊게 파고들지는 못했습니다. ​ 이 시리즈를 만들어가면서 깊이있는 숙련도를 얻고 싶네요. 더보기