본문 바로가기

분류 전체보기

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. 네비게이션 시스템 베이킹시 갭이 발생할 때 기본 설정으로 네비 메쉬를 굽고 캐릭터를 올려보면 캐릭터가 바닥에서 발이 떨어져있는듯한 모습을 보여주기도 합니다. 네비게이션 메쉬를 생성할 때 사용하는 복셀 크기때문에 그런데요, 옵션에서 복셀 크기를 적당히 줄여주면 비교적 정확하게 베이크가 됩니다. 너무 크기를 줄여버리면 시간이 과도하게 오래걸릴 수 있으니 감당할 수 있는 수준에서 조절하면 됩니다. 바닥에 신발이 붙은 것 처럼 수치를 조절할 수 있었습니다. 더보기
언리얼: 튜링 메시 셰이더 블로그 번역 사전 지식 1. 콤퓨트 셰이더 2. 기존 렌더링 파이프라인 여기에 작성된 글은 번역이 아닌 번역자 코멘터리 원문 : Introduction to Turing Mesh Shaders | NVIDIA Developer Blog Introduction to Turing Mesh Shaders | NVIDIA Developer Blog Turing introduces a new programmable geometric shading pipeline, mesh shaders,, enabling threads to cooperatively generate compact meshes on the chip. developer.nvidia.com 튜링 아키텍쳐는 메시 셰이더 사용을 통해 새로운 지오메트리 셰이딩 파이프라.. 더보기
언리얼: 에인션트의 협곡 골렘 구현 방식 간단 살펴보기 언리얼 엔진 5 테크 데모 - 에이션트의 협곡 에인션트의 협곡에서 보스로 등장하는 골렘의 이름은 『에인션트 원』입니다. 거대한 캐릭터임에도 자연스러운 애니메이션과 이펙트로 주인공을 위협합니다. 그런데, 여기에서 궁금한 점이 생깁니다. 공식 문서의 나나이트 섹션을 참조하면, 나나이트 메시는 스켈레탈 메시의 디포메이션을 허용하지 않는다고 기술되어있습니다. 움직이며 디포메이션 되는 스켈레탈 메시는 나나이트를 사용할 수 없다는 말입니다. 그러나, 골렘의 겉 갑주는 디포메이션 될 필요가 없습니다. 카오스 디스트럭션 시스템 등을 통해 부서지는 파티클로 연출하는 방식 등으로 구겨지거나 구부러지는 디포메이션을 회피할 수 있습니다. 각 갑옷을 애니메이션 되는 스켈레탈 메시에 어태치해, 정점의 디포메이션 없이 포지션과 로.. 더보기
Unity: Workflow. 코드 레벨에서 사용중인 렌더 파이프라인 특정하기 2 이전 글에서 GraphicsSettings.currentRenderPipeline 의 이름을 참조하여 현재 렌더링 파이프라인을 확인하는 코드를 작성했었습니다. 2021.05.05 - [유니티] - 유니티: 8. 코드레벨에서 사용중인 렌더 파이프라인 특정하기 유니티: 8. 코드레벨에서 사용중인 렌더 파이프라인 특정하기 GraphicsSettings.currentRenderPipeline API를 이용하면 현재 사용중인 렌더링 파이프라인 에셋을 가져올 수 있습니다. 하지만 빌트인 렌더러를 사용하고 있는 경우, URP나 HDRP 패키지를 임포트 하지 않아 스 seonghwan.tistory.com 그런데 오늘 URP 코드를 둘러보다가 Shader.globalRenderPipeline이라는 string 프로퍼티.. 더보기
언리얼 vs 유니티: 4. 사용하는 프로그래밍 언어 게임 회사에 자리잡고 계신 꽤 많은 게임 개발자들은 c와 c++을 시작으로 프로그래밍에 입문했을 것입니다. 상용엔진이 보편화 되기 전에는 대부분 c나 c++을 이용한 자체엔진으로 게임을 만들어왔고, 프로그래밍 언어의 기초라는 이유도 한 몫 했을 것입니다. 2010년대에 들어 c# 언어를 사용하는 유니티가 널리 사용되면서 처음 배운 언어가 C#인 게임 개발자 분들도 많이 늘어났습니다. c나 c++에 비해서는 조금 쉽게 배울 수 있고 개발이 빠를 수 있다는 점이 매력적입니다. 근래에 들어서는 암호화폐를 등에 업은 GPU 성능의 발달이 눈에 띄었습니다. 알파고의 유명세와 함께 머신 러닝Machine Learning 과 빅 데이터 분석 분야의 인기로 Python 부터 시작하신 개발자들도 서서히 자리잡고 있습니다.. 더보기
언리얼 vs 유니티: 3. 에셋 참조 방식 에셋 간에도 의존성이 존재합니다. 유니티의 머티리얼은 사용되는 텍스쳐들의 주소를 알고 있어야 하고, 메쉬역시 머티리얼의 주소를 알고 있어야 합니다. 언리얼과 유니티는 이 과정에서 다른 컨셉을 갖고 있습니다. 쉬어가는 느낌으로 간단히 알아보겠습니다. 유니티 유니티는 에셋을 참조할 때 guid를 사용합니다. 프로젝트 설정의 에디터 파트에서 Serialization을 Text 모드로 사용하게 되면, meta 파일을 텍스트 편집기로 열 수 있습니다. 매우 정직하게 guid: xxxx... 로 표기되어있습니다. 이 메타파일은 텍스쳐의 메타입니다. 이 텍스쳐를 사용하게되면, 이 guid를 저장하게됩니다. 예를 들어 이 텍스쳐를 사용하는 RawImage 컴포넌트가 있는 씬을 텍스트 편집기로 열어보면 이 guid를 발.. 더보기