728x90

유니티 엔진 (Unity Engine) 141

[Unity] 에셋스토어 에셋 구입 시 Tax Number?

유니티 에셋스토어에서 에셋 구입 시 Checkout 명세서에 Tax Number 작성칸이 있습니다. Tax Number 는 해외결재나 흔히 해외 직구를 할 때 볼 수 있는데, 세금을 내야하는 납세자의 식별번호입니다. 바로 위에 Tax 란을 보면, "Are you exampt from paying consumption tax?"라는 물음과 라디오 버튼이 있는데, "님 소비세 면제 받으셨음?"라고 묻고 있습니다. 부가가치세와 같은 개념으로, Tax Number 를 사용하는 국가라면 번호를 입력하고 나중에 세금이 부과되는 시스템으로 보입니다. ​ 한국 구매자라면 Tax Number 시스템을 사용하지 않고, 소비세를 면제받지도 못하니, No 를 선택해줍니다. 그럼 Tax number 칸이 사라지고, 우측의 Or..

[Unity] Component의 컨텍스트 메뉴(ContextMenu) 만들기

유니티에서 컨텍스트 메뉴(ContextMenu) 는, 컴포넌트 이름 우측에 세로로 돌아간 ... 아이콘을 클릭했을 때 등장하는 메뉴입니다. Context Menu 를 직역하면 "맥락 메뉴" 정도인데, 인스펙터에 보여지는 해당 컴포넌트의 맥락에 맞는 메뉴라는 뜻. 스크립트에 ContextMenu 속성(Attribute)을 입력해서 이 "맥락 메뉴"항목을 간단하게 추가할 수 있고, 각종 편의기능 등을 구현해서 활용할 수 있습니다. ​ 아래처럼, 컨텍스트 메뉴를 선택했을 때 호출할 함수 위에 [ContextMenu("Menu Name")] 을 입력해주기만 하면 됩니다. 그럼 함수 내용이 즉시 실행됩니다. 함수는 비정적 함수(non-static) 함수여야 합니다. using UnityEngine; public ..

[Unity] PlayerPref 레지스트리 저장 경로

유니티 엔진에서 쉽고 빠르게 로컬 저장소를 활용하는 방법으로 PlayerPrefs 를 활용하는 방법이 있습니다. 아래와 같이 쉽게 데이터를 타입에 맞게 저장하고 불러올 수 있습니다. 이 데이터는 윈도우즈의 경우 레지스트리(Registry)에 저장하게 되는데, 아래와 같은 형태로 저장됩니다. 레지스트리 에디터는 윈도우키 + R 키로 실행창을 열고 regedit 을 실행하면 열 수 있습니다. 경로는 아래와 같은데, Editor 모드일 때 저장한 경로와, Standalone 일 때 저장한 경로가 다릅니다. 에디터 : HKEY_CURRENT_USER\Software\Unity\UnityEditor\[company name]\ 에디터 : HKEY_CURRENT_USER\Software\[company name]\..

SmoothDamp 는 어떻게 구현돼있을까?

UnityEngine Vector3.SmoothDamp(...) 부드러운 이동을 구현하기 위해 손쉽게 활용하는 함수입니다. 주로 Target 을 부드럽게 따라가는 카메라의 LookAt 혹은Position계산에 활용된다고 합니다. 저도 그렇게 썼었고요. // Smooth towards the target using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform target; public float smoothTime = 0.3F; private Vector3 velocity = Vector3.zero; void Update() { // Define a target positi..

셰이더 입문서 추천 "아티스트를 위한 유니티 URP 셰이더 입문"

게임 개발, 그래픽 관련 정보를 탐색하시던 분들은 핑속(이상원)님 닉네임이 익숙하실 것 같습니다. 지식 공유 활동도 많이 하시고 캐릭터 셋업 테크닉 책도 쓰셨었죠. 지금은 청강문화산업대학교에서 후학을 양성하고 계시는 핑속님이 유니티 2021 최신 버전 기반의 셰이더 입문서를 쓰셨습니다. "아티스트를 위한 유니티 URP 셰이더 입문". 빠르게 훑어보다가도 중간중간 멈춰 탐독할 정도로 너무 유익하게 읽게 되는 책이지만, 좋은 책 빨리 소개하고자 전체적으로 최대한 훑어보고 리뷰 해봅니다. ​ 비엘북스에서 5년만에 출판한 유니티 셰이더 입문책. 비엘북스에서 유명한 셰이더 입문책은 5년 전에 대마왕 정종필님께서 쓴 "유니티 쉐이더 스타트업"이 있었죠. 비엘북스가 국내 셰이더 기술 발전에 얼마나 진심인지 알 것 같..

강력 추천 유니티 입문서 "유니티 교과서" 개정5판

프로그래밍을 못하지만 게임을 만들고싶은 입문자, 초심자 분들께 추천하던 책이 있었습니다. 내용도 구성도 훌륭했거든요. 그 책이 바로 "유니티 교과서" 시간이 흘러흘러 무려 개정5판이 나왔습니다. 게임 개발자 중 한 명으로서 좋은 책을 꾸준히 내주시는 길벗 출판사에 감사드립니다. 개정판이 계속 나온다는 이야기는, 이 책이 그만큼 많은 사랑을 받았다는 뜻이겠죠. 저도 이 책의 이전 판 판매에 몇 권 정도 기여를 했던 것 같습니다. 유니티 교과서의 겉표지는, 교과서라는 이름에 걸맞게 아주 정직합니다. - 귀여운 고양이가 자주 등장해 이해를 돕습니다. - 단순 예제 따라하기가 아니라, 게임 제작의 흐름을 익히며 게임 제작을 함께 학습할 수 있습니다. - C# 프로그래밍을 몰라도 이 책을 통해 기본을 익혀 게임을..

[Unity] Play Mode 시작 시 씬 고정하기

Unity Editor로 특정 씬을 작업하다가 플레이 모드를 시작할 때, 특정 씬부터 실행되도록 고정하고 싶을 때가 있습니다. 이럴 때 아래 스크립트 코드를 활용해서 시작 씬을 고정할 수 있습니다. #if UNITY_EDITOR using UnityEditor; using UnityEditor.SceneManagement; [InitializeOnLoadAttribute] public static class DefaultSceneLoader { static DefaultSceneLoader(){ EditorApplication.playModeStateChanged += LoadDefaultScene; } static void LoadDefaultScene(PlayModeStateChange state){..

Unity TextMeshPro(TMP) 한글 폰트 출력하기

메모 차원에서 포스팅 해둡니다. Unity 의 검증된 Text 솔루션 패키지인 TextMeshPro 에서 한글 Text 를 출력하기 위한 방법입니다. ​ 대략적인 순서 1. 무료 한글 폰트 다운로드 2. 한글 폰트를 TMP_Font Asset 으로 변환 3. TMP Text 생성 4. TMP Text 의 Font Asset 교체 순정(?) TEP Text 를 생성하면,기본 폰트에 한글이 들어있지 않아 정상적으로 표시되지 않습니다. Liberation Sans 라는 이름의 폰트인데, Adobe 에서 제공하는 Adobe Fonts 라이브러리에 속해있는 무료폰트이지만 아쉽게도 한글이 없군요. Liberation Sans 상세 설명 https://fonts.adobe.com/fonts/liberation-san..

유니티 허브(Unity Hub) 3.0.0 정식 버전 둘러봤습니다

유니티 허브(Unity Hub) 3.0 베타가 끝나고 정식 3.0.0 버전이 릴리즈 됐습니다. 베타가 끝났으니 이제 써봐야지. 직접 업그레이드 해보고 둘러보겠습니다. 기존 2.x 버전 허브의 우측 상단에 "3.0.0 사용 가능" 버튼이 보입니다. "지금 다시 시작 및 설치"를 눌러 3.0 으로 가봅니다. 업데이트 하고 첫 화면. 새로워진 Hub 시작하기. UI/UX 와 설치 및 다운로드를 비롯한 프로젝트 관리 편의성이 개선되었다고 합니다. 시작 가이드 플로우도 개선되고, 애플 실리콘 프로세서에서도 Unity Hub 를 실행할 수 있도록 개선되었다는데... 그 전엔 안됐나봅니다? 애플기기를 안 쓰고있어서 몰랐네요. 그리고 다크모드. 요즘 브라우저도 에디터도 다크모드 지원을 빅 업데이트로 다루는 게 유행인가..

[C#] Null 조건부 연산자 ?. (null conditional operators)

Null 조건부 연산자. 물음표와 마침표를 연결해 사용합니다. 영어로는 Null conditional operators. Something?.Member 이렇게 사용하는데, null 조건부 연산자는 피연산자가 null이 아닌 것으로 평가되었을 때만 멤버를 엑세스 합니다. null 조건부 요소 연산자는 아래처럼 씁니다. 마찬가지로 피연산자가 null이 아닌 것으로 평가되었을 때 요소를 엑세스 합니다. ?[] 조건부 멤버나 요소 액세스 작업의 한 체인의 작업에서 null을 반환하면 나머지 체인은 실행되지 않습니다. // null 조건부 연산자 예시 A?.B.C(); A?.B?.Do(C); A?.B?[C]; // null 조건부 연산자를 사용하지 않았을 경우 if (null != A) A.B.C(); if (..

728x90
반응형