Audio Reverb Zone이란? Audio Listener의 위치에 따라 Audio Clip에 Reverb(잔향) 효과를 적용합니다. Reverb 효과를 통해 다양한 공간적(Volumetric) 오디오 효과를 구현할 수 있습니다. 주로 동굴, 시끄러운 도시, 공포스러운 분위기 조성 등에 사용됩니다. 에셋을 이용한 Reverb Zone 적용 Audio Reverb Zone컴포넌트는 아래 에셋과 함께 사용하면 수동으로 Position을 조절해줄 필요도 없으며 공간감을 더 조성해 주어 시너지가 좋습니다! 유니티 손쉽게 현실감 높은 사운드를 만드는 방법: Volumetric Audio를 소개합니다!🎧 Volumetric Audio란? 사운드 디자인을 도와주는 오디오 유틸리티 툴 에셋입니다. 다양한 3D 형..
I2 Localization란? Unity에서 사용할 수 있는 번역 시스템입니다. UI, 2D, TextMesh Pro와 같은 주요 컴포넌트들에 사용가능하며 개발자가 다양한 플랫폼(PC, 모바일 등)에서 로컬화(번역)된 경험을 제공할 수 있게 해줍니다. 또한, 이미지, 사운드, 폰트 등의 다양한 미디어 요소를 쉽게 번역하고 관리할 수 있게 설계되었습니다. 직관적인 컴포넌트 Language Source 프로젝트가 지원하는 모든 언어와 로컬라이즈할 수 있는 모든 항목의 목록 데이터를 LanguageSource에 저장합니다. 또한 관리하고, 오류를 감지하고, 외부 스프레드시트와 동기화하는 방법을 제공합니다. Localize component Localize 가능한 모든 객체(Sprites, Audio Sour..
Rigidbody Interpolate란? None: 기본 설정이며 최소한의 처리가 필요합니다. 물리 개체가 매우 빠르게 움직이지 않거나 약간의 흔들림이 문제가 되지 않는 게임에 적합합니다. 예를 들어 턴 기반 전략 게임에서는 보간이 필요하지 않을 수 있습니다. Interpolate: 게임의 프레임 속도가 물리 업데이트 속도보다 훨씬 높을 때 물리 개체의 움직임을 부드럽게 만드는 데 유용합니다. 예를 들어 레이싱 게임에서 보간을 사용하여 게임이 높은 프레임 속도로 실행되는 경우에도 자동차의 움직임이 더 부드럽게 보이도록 할 수 있습니다. Extrapolate: 보간에 의해 도입될 수 있는 인지 지연을 줄이려는 경우, 특히 개체가 플레이어 입력에 의해 직접 제어되는 경우에 유용합니다. 예를 들어 플레이어가..
예제 폰트(쿠키런 폰트!) 쿠키런 폰트 쿠키런 글꼴을 이제 웹에서도 즐기세요. www.cookierunfont.com 위에 가서 폰트를 다운받아줍니다! OTF와 TTF의 차이점 파일 형식: OTF: OpenType 글꼴은 TrueType 글꼴 형식을 기반으로 하지만 추가 기능을 제공합니다. 파일 확장자는 ".otf"입니다. TTF: TrueType 글꼴은 Apple과 Microsoft에서 개발한 표준 글꼴 형식입니다. 파일 확장자는 ".ttf"입니다. 호환성: OTF: OpenType 글꼴은 일반적으로 Windows 및 macOS 시스템과 모두 호환됩니다. Unity를 비롯한 최신 운영 체제 및 애플리케이션에서 광범위하게 지원됩니다. TTF: TrueType 글꼴은 Windows 및 macOS와도 호환됩..
영상 코드 using UnityEngine; public class PullRope : MonoBehaviour { private bool isRightHoldedState; private bool canRightHoldRope; private bool isLeftHoldedState; private bool canLeftHoldRope; private Vector3 firstRightHoldTransform; private Transform holdingRightTransform; private Vector3 firstLeftHoldTransform; private Transform holdingLeftTransform; public Transform holdRightGrabTransform; publ..
# Dictionary란? var dictionary = new Dictionary(); dictionary.Add("Name", "KinJinwoo"); var name = dictionary["Name"]; Debug.Log(name); Dictionary 구조로 되어 있습니다 도서관을 예시로 들면, 컴퓨터로 책 제목을 치면 위치를 얻을 수 있습니다 즉, Key와 Value를 사용하여 자료를 저장합니다 중복 를 허용하지 않습니다 위 코드를 예시로, dictionary에 Name이라는 Key값을 저장했으므로, 또 다시 Name이라는 Key값을 Add할 수 없습니다! 제네릭으로 TKey와 TValue의 타입을 미리 정할 수 있어 박싱과 언박싱이 발생하지 않습니다 위 코드에는 TKey와 TValue 타입이..
[VContainer이란?] VContainer는 Unity를 위한 가볍고 빠른 DI(Dependency Injection) 프레임워크로, 종속성 및 개체 생성을 쉽게 관리할 수 있도록 도와줍니다. DI는 종속성의 생성 및 관리를 분리하는 프로그래밍 디자인 패턴입니다. VContainer의 주요 기능 중 하나는 성능입니다. 다른 종속성 주입 프레임워크와 달리 VContainer는 런타임이 아닌 컴파일 타임에 코드를 생성합니다. 전반적으로 VContainer는 Unity 프로젝트의 아키텍처를 단순화하고 개선하는 데 도움이 되는 강력하고 가벼운 DI 프레임워크입니다. 유니티(Unity) 인터페이스(Interface) 완전 쉽게 설명 먼저 인터페이스가 무엇인지 알고 시작해야합니다 인터페이스를 구글링하면 뭐 U..
heartbeat 생명주기 유니티 "Lobby 서비스"에서 사용되는 로비는 30초 안에 heartbeat를 보내거나 update되지 않으면 비활성화 됩니다. 비활성화 상태가 되면 유저는 더이상 'Quick Join'으로 참여할 수 없으며, query 결과값으로도 보이지 않게 됩니다.(즉, 로비를 찾지 못한다는 뜻) 비활성화 상태가 되고 1시간이 지나면, 로비는 만료됩니다. 만료된 로비는 새로운 업데이트나 하트비트가 없으면 자동으로 삭제됩니다! 업데이트는 로비 속성을 변경한 경우에만 실행됩니다. 여기에는 호스트의 플레이어 데이터에 대한 변경 사항은 포함되지 않습니다. 예시 코드 async Task CreateLobbyWithHeartbeatAsync() { string lobbyName = "test lo..
인터페이스란?예를 들어, 우리가 컴퓨터 키보드에 글자를 입력하면, 키보드는 글자를 컴퓨터로 전달합니다. 이때 키보드와 컴퓨터 사이의 인터페이스는 키보드의 물리적 디자인과 컴퓨터가 키 입력을 이해하는 프로그램 사이의 연결 역할을 합니다. 그 덕분에 우리가 타이핑하는 순간 글자가 화면에 나타나게 되는 것입니다. 아직 이해가 제대로 되지 않으셔도 괜찮습니다. 아래 "햄버거"를 예시로 쉽게 인터페이스에 대해 다시 설명드리겠습니다. 햄버거 만들기햄버거를 만드는 스크립트를 작성한다고 생각해 봅시다. 우리는 다음 4개의 스크립트가 필요할 것입니다. (물론, 더 많이 존재할 수 있겠지만 대략적인 틀만 잡아 보기 위해 4개의 스크립트만 준비했습니다. 모든 코드는 수도코드 형식으로 작성되었습니다.) 햄버거 레시피 (인터페..
Recorder 임포트하기 Package Manager를 열어 Recorder를 찾아준 후 Install를 눌러 설치해줍니다. 설치가 끝나면 상단 [Window] - [General] 탭으로 들어가보면 Recorder가 생긴 것을 확인할 수 있습니다. 촬영하기 Recorder Window를 클릭하면 위와 같은 Recorder 윈도우 창이 뜹니다. [+ Add Recorder]을 클릭하면 원하는 형식의 촬영방식을 선택할 수 있습니다. 촬영 방식은 Animation Clip, Movie, Image Sequence, Audio가 있습니다. Movie를 선택해주면 위 화면과 같이 옵션을 선택할 수 있는 부분들이 생겨납니다. 설정관련 설명은 생략하겠습니다. 결과 영상 촬영 결과물
TimeLine 세팅하기 상단 [Window] 탭에 => [Sequencing]탭을 누른 후 [Timeline]을 누르면 Timeline 윈도우 창이 생성되는 것을 확인할 수 있습니다. Track Group 타임라인을 테스트 할 큐브를 하나 생성해준 후 큐브의 이름을 Player로 바꿔주었습니다. 다음으로 Empty GameObject를 생성해준 다음 이름을 TimelineDirector로 바꿔주었습니다. 다음으로 TimelineDirector 클릭하고 Timeline창의 Create버튼을 눌러줍니다. 만약, Timeline창에 Create버튼이 생기지 않았다면 TimelineDirector가 클릭된 상태가 아니기 때문입니다! Timeline의 Create버튼을 누르면 TimelineDirector에 P..
타이머 분(Min), 초(Sec) XX:XX 로 표시(코드) / string.Format 이용하기 private void Update() { sec += Time.deltaTime; if (sec >= 60f) { min += 1; sec = 0; } gameTime.text = string.Format("{0:D2}:{1:D2}", min, (int)sec); } string.Format메서드를 사용하여 시간 값을 나타내는 형식이 지정된 문자열을 만들 수 있습니다. 위 코드에서 보시면 " {0:D2}:{1:D2}"가 형식 문자열입니다. 문자열에 값을 삽입할 때 값의 서식을 지정하는 방법을 정의할 수 있습니다. {0:D2} : {0}으로 표시되는 첫 번째 인수를 나타냅니다. {1:D2} : {1}로 표시..