Unity 디자인 패턴 Command
·
유니티/Tutorial
커맨드 (Command) 패턴은 키 입력이나 마우스 입력과 같이 어떤 요청을 객체로 만들어 캡슐화시키는 패턴을 말합니다. 단순 요청만 전달하는 게 아니라 요청 자체를 객체로 만들어서 전달한다는 게 커맨드 패턴의 핵심입니다.객체로 만들면 요청을 실시간으로 전달할 필요가 없어지고 요청 자체를 기록할 수 있게 됩니다. CPU에서 GPU로 데이터를 넘겨주는 Command Buffer도 커맨드 패턴을 사용하는 걸로 알고 있고게임에서는 주로 AI 행동, 입력 시스템, Undo/Redo 같은 기능에서 사용합니다. 구현 저는 플레이어 Move를 예로 구현해 봤습니다. ICommandpublic interface ICommand{ void Execute(); void Undo();} 우선 상속할 인터페이스를 ..
Unity MCP
·
유니티/Tip
가끔 유니티를 하다 보면 'AI가 Capsule을 생성해서 거기에 Character Controller를 넣어주면 좋겠는데'와 같이채팅만 치면 유니티 시스템을 이용해서 알아서 만들어주면 좋겠다는 생각이 든 적이 있습니다. 그런데 최근 이 생각이 점점 현실로 되어 가고 있는 거 같습니다.아직 초기 이긴 하지만요. MCP (Model Context Protocol)은 LLM을 통해 외부 리소스와 상호작용을 할 수 있는 개방형 프로토콜이라고 합니다.유니티에선 그냥 AI 채팅을 통해 유니티 내 기능들을 사용하는 거라고 생각하시면 됩니다. 근데 말했듯이 초기 단계라서 진짜 기본적인 것들만 가능하고 안 되는 것도 많습니다.설치 준비물Node.js 18 이상 Node.js — Node.js® 다운로드Unity 202..
Unity 디자인 패턴 Observer
·
유니티/Tutorial
옵저버 (Observer) 패턴은 Subject (주체)에 의해 모든 Observer (관찰자) 에게 알림을 보내는 디자인 패턴입니다.우리가 자주 보는 유튜브에서도 유튜버와 그 유튜버를 구독한 사람과의 관계에서도 옵저버 패턴의 예를 찾아볼 수 있습니다.구독자가 유튜버의 알림을 받는다면 유튜버가 영상 올릴 때 알림을 받는 모든 구독자에게 알림이 전달됩니다.여기서 유튜버는 Subject, 구독자는 Observer라고 볼 수 있습니다. Subject (주체) 는 모든 Observer에게 알림을 전달합니다.Observer (관찰자) 는 Subject 가 보낸 알림을 수신합니다. 구현 위 예시를 기반으로 코드를 짜보겠습니다. Subscriber (Observer)public interface IObserver{ ..
유니티 도움 되는 사이트 & 자료
·
유니티/Tip
유니티 디자인 패턴 & SOLID디자인 패턴 및 SOLID 원칙으로 코딩 스킬 업그레이드 | Unity 디자인 패턴 및 SOLID 원칙으로 코딩 스킬 업그레이드 | Unity11가지 프로그래밍 패턴에 대한 가이드를 통해 Unity 프로젝트를 개선해 보세요. 샘플 프로젝트를 다운로드하고 코딩 스킬을 업드레이드해 보세요.unity.com더보기디자인 패턴 소개본 가이드를 활용하는 방법샘플 프로젝트SceneBootsTrapperSOLID 원칙단일 책임 원칙 . 13예시: 샘플 프로젝트 . 17개방-폐쇄 원칙 . 17예시: 샘플 프로젝트 . 22리스코프 치환 원칙. 23예시: 샘플 프로젝트 . 30인터페이스 분리 원칙. 31예시: 샘플 프로젝트 . 33인터페이스 직렬화 . 34종속성 역전 원칙. 36예시: 샘플 ..
Unity 디자인 패턴 Singleton
·
유니티/Tutorial
싱글톤(Singleton)은 게임 개발에서 자주 쓰이는 디자인 패턴 중 하나로객체를 여러 개 인스턴스화시키지 않고 하나만 만들어서 그 객체에 접근하는 디자인 패턴입니다.Singleton 쓰는 이유객체를 여러 개 만드는 것보다 하나만 만드는 것이 메모리에 할당되는 데이터양이 더 적습니다.게임 내내 접근해야 할 전역 변수, 함수가 필요할 때 사용합니다.보통 게임에서 싱글톤은 Manager 스크립트에서 자주 쓰입니다.Game Manager, Input Manager, Enemy Manager, Sound Manager 등등  슈퍼마리오 같은 스테이지 게임을 예시로 들면Game Manager에서 ChangeStage, GameOver 같은 함수들이 있다고 치겠습니다. 그러면 마리오가 Lives를 다 소비하면 G..
Unity Compute Shader
·
유니티/Tutorial
Compute Shader 컴퓨트 쉐이더는 GPU에게 연산 일을 시키는 작업General Purpose Computing On Graphics Processor Units줄여서 GPGPU를 통해 병렬로 연산을 처리하기 위해 사용합니다. 간단한 예시 하나 들자면CPU는 수학과 교수님이 어려운 문제를 계속 푸는 거라면GPU는 초등학생 100명에게 간단한 수학 문제를 풀게 만드는 겁니다. 유니티에서 예를 들면 수십 수백만 개의 오브젝트의위치를 계산할 때라든지 간단하지만 많은 작업을 할 때 사용합니다. Compute Shader Unity 6을 사용했습니다. 생성우선, Compute Shader를 생성해야 합니다.생성 방법은 아주 간단한데 위 경로로 가셔서 Compute Shader를 생성하면 됩니다.그러면 ..
Unity 주 마다 무료 에셋 얻기
·
유니티/Tip
유니티는 매주 금요일마다 유료 에셋 판매자들 중에서Publisher를 지정합니다. 해당 판매자가 판매 중인 유료 에셋 중 하나를 무료로 뿌림과 동시에판매자의 에셋들을 홍보해줍니다. 유니티 에셋 스토어에 들어간 다음 밑으로 내리다 보면 퍼블리셔라는 단어가 붙어있는 사진이 있을겁니다. 지금 둘러보기를 눌러서 들어가거나 아래 링크를 클릭해서 들어가면게임 제작을 위한 베스트셀러 에셋 | Unity 에셋 스토어 위와 같은 페이지가 뜨는데 여기서 중간에 있는 텍스트 이 텍스트 중에서 WHITEBOXSTUDIO 이 부분이 쿠폰 번호입니다.대문자로만 이루어진 텍스트만 매주 찾으면 됩니다.이 텍스트를 복사해줍니다. 그 다음GET YOUR GIFT|장바구니 담기|결제하기 순으로 클릭해줍니다.  오른쪽 아래 칸에 쿠폰 번호..
Unity 화면 전체에 Blink 효과
·
유니티/Shader
스크립트 BilnkEffect.csusing System;using UnityEngine;using UnityEngine.Rendering;using UnityEngine.Serialization;// 에디터에서도 실행되게 하려면 주석 해제[ExecuteAlways]public class BlinkEffect : MonoBehaviour{ [SerializeField] private Material blinkMat; [Header("Blink Settings")] [SerializeField, Range(0.0f, 1.0f)] private float blink = 0.001f; [SerializeField, Range(0.75f, 1.0f)] private..
Unity New Input System
·
유니티/Tutorial
New Input System은 기존의 Input Manager의 문제점인플랫폼 간의 키 연동 문제를 개선하기 위해 나온 툴입니다. 또한, 위 사진처럼 키 매핑을 보기 쉽게 만들어서 개발자가 한눈에 어떤 키가 있는지 파악할 수 있습니다.설치 일단 저는 Unity 6에서 진행했고 2018.3 버전부터 input system을 지원하는 걸로 알고 있으니 참고해 주세요. 우선Window|Package Manager|Unity Registry에 들어갑니다. 그다음에 검색 창에 input 만 쳐서 나오는 Input System을 install 해줍니다.그러면 위 사진처럼 설치가 됩니다.Samples 메뉴에 다양한 예제들이 있으니 이를 참고하셔도 됩니다. 키 등록 키를 등록하기 위해서는 먼저, Project 창..
Unity Edit Mode에서 오브젝트 부서지는 효과 만들기
·
유니티/Script
Unity 오브젝트 부서지는 효과 — 개발과 연구 Unity 오브젝트 부서지는 효과Nvidia Blast - News & General Discussion - Unity Discussions 해당 효과는 위의 글에서 bocs라는 분이 nvidia blast를 unity에서 쉽게 쓸 수 있도록만든 외부 라이브러리를 사용했습니다. 구현  일단 위의 패키지를gamecoke.tistory.com이번 글은 위 글에 있는 Blast 패키지와 FractureTool.cs 스크립트가 필요합니다.또한, UI Toolkit이 필요한데 이건 아마 2021.3 이상 유니티 버전에 기본으로 깔려있을겁니다.  Play Mode에서 실시간으로 만드는 것보다미리 만들어 놓고 설정하는 게 더 편할 것 같아서 Edit Mode도 만들었..