728x90

유니티엔진 132

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

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

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

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

강력 추천 유니티 입문서 "유니티 교과서" 개정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 를 실행할 수 있도록 개선되었다는데... 그 전엔 안됐나봅니다? 애플기기를 안 쓰고있어서 몰랐네요. 그리고 다크모드. 요즘 브라우저도 에디터도 다크모드 지원을 빅 업데이트로 다루는 게 유행인가..

유니티 엔진 2021.1 버전 매뉴얼에 새로 추가된 것 (게임 개발 퀵스타트 가이드)

Unity Engine 공식 도큐먼트를 둘러보다가 2021.1 버전 문서의 New in Unity 2021.1 페이지를 봤습니다. 어떤 것들이 추가됐는지를 보여주는 문서로, 2021.1 버전 문서에만 존재하는 페이지입니다. 다른 버전 문서에는 해당 버전의 새로운 내용들이 있으니까요. New in UInity 2021.1 문서에서 눈길이 가는 항목이 있었습니다. New documentation 항목 아래에 있는 두 개 항목. - 2D Game development quickstart guide (2D 게임 개발 빠른시작 가이드) - 3D Game development quickstart guide (3D 게임 개발 빠른시작 가이드) 이 두 개 항목입니다. 2D game development quicksta..

[Unity] 빌드에러 AndroidManifest.xml:41: AAPT: error: unexpected element <queries> found in <manifest>.

\Temp\gradleOut\launcher\build\intermediates\merged_manifests\release\AndroidManifest.xml:41: AAPT: error: unexpected element found in . ​ 검색해보니 gradle 버전을 올리면 된다고 합니다. quries 라는 엘러먼트를 구버전 gradle에선 인식을 못하나보네요. ​ 아래 경로에서 baseProjectTemplate.gradle 파일을 열어서 dependencies 의 classpath 를 수정. 3.4.0 버전을 3.4.3 으로 수정. 다른 사소한 문제들도 좀 있었지만, 어쨌든 빌드 성공!

[Unity] 아틀라스(Atlase)로 묶은 스프라이트(Sprite) 문제들

유니티에서 여러가지 이미지, 특히 아이콘들을 다룰 때 최대한 배칭을 줄이기 위해 아틀라싱을 하게 되는데, 이 때 대표적으로 아래 두 가지 문제를 겪을 수 있습니다. ​ 문제1. 스프라이트가 돌아가(회전) 보이는 경우. 말 그대로 정상적으로 보여야 할 이미지가 90도 혹은 180도 돌아간 모양으로 보이는 경우. Packing 과정에서 최대한 많은 이미지를 담기 위한 알고리즘이 동작하면서 이미지를 회전시켰을 때 발생하는 문제입니다. Atlas 를 선택하고 Inspector 에서 Packing / Allow Rotation 옵션을 꺼주면 됩니다. ​ 문제2. 이미지 테두리에 이상한 그림이 걸쳐 보이는 경우. 보여주고자 하는 이미지만 정상적으로 보이지 않고, 이미지 테두리쯤에 알 수 없는 도트나 이미지가 걸쳐 ..

[Unity] Canvas Order 설정으로 팝업창 구현

팝업창이나 다른 페이지 위에 올라가는 페이지 UI 를 구성하기 위해 Layer Order 를 조정하는 것이 깔끔한데, 이렇게 Layer Order 를 조정해주는 컨테이너 성격의 컴포넌트가 Canvas 컴포넌트. 이런 구성입니다. 기본 Canvas 는 Order in Layer 가 0 이고, 이 갚이 클수록 위로 올라옵니다. Scene 에 배치하고 상수를 입력하기보다는, 코드에서 Order in Layer 값을 설정하도록 하면 UI 댑스를 관리하기엔 좋을 것 같네요. ​ Canvas 컴포넌트 아래에는 Graphic Raycaster 라는 컴포넌트가 있는데, 이 컴포넌트가 없으면 아래 깔린 다른 UI 가 클릭 이벤트 등을 받아버리는 문제가 생깁니다. 그래서 Graphic Raycaster 컴포넌트를 붙여서,..

728x90
반응형