프로젝트의 유니티 버전을 업그레이드 하니 아래와 같은 에러가 발생했었다. Shader error in 'TextMeshPro/Distance Field': Couldn't open include file 'TMPro_Properties.cginc'. at line 126 해당 에러는 TextMesh Pro 컴포넌트와 관련된 셰이더 문제라고 한다. 해결 방법은 다음과 같다. 1. TextMesh Pro 재설치 유니티를 종료하고 이전 버전의 TextMesh Pro 폴더 삭제 Window > TextMeshPro > Import TMP Essential Resources를 선택하여 필수 리소스 재설치 위 방법으로도 해결이 안된다면 경로 문제일 수도 있다. 필자는 아래 방법으로 해결했다. 2. 셰이더 파일 위치..
Unity에서 2D로 게임을 개발하다 보면 계속해서 스크롤 되는 배경이 필요할 때가 있다. 구현 방식에는 여러 가지가 있지만 이 글에서는 카메라는 고정하고 이미지 자체를 스크롤 하는 방식을 사용한다. 먼저 Canvas 오브젝트를 생성하고 Render Mode를 Screen Space - Camera로 설정한 다음, Render Camera를 현재 사용하는 카메라로 설정해 준다. 그리고 Canvas 오브젝트의 자식 오브젝트로 Image 오브젝트를 생성해 준다. Source Image는 스크롤 할 배경 이미지로 설정해 주고, Material은 새로 생성해서 설정해준 뒤 Shader를 Unlit/Transparent로 설정해 준다. 배경 이미지는 반복해서 스크롤 되어야 하므로 Warp Mode를 Repeat으..
Unity에 2D 픽셀 아트 파일을 처음 넣어서 보면 위 이미지처럼 크기가 너무 작게 나올 때가 있다. 이것은 현재 픽셀 개수보다 Pixels Per Unit 값이 너무 크게 설정되어있어서 나타나는 문제이다. 이럴 때는 스프라이트 파일의 Inspector 창에서 현재 크기를 확인하고 Inspector 창에서 Pixels Per Unit 값을 적당하게 설정해주면 된다. 그러면 크기는 원본 파일처럼 커졌지만, 흐릿하게 보이는데 이는 현재 Filter Mode 옵션이 Bilinear로 기본 설정되어있기 때문이다. Inspector 창에서 Filter Mode 옵션을 필터가 없는 옵션으로 설정해 주게 되면 이렇게 선명하게 변하게 된다. 그런데 다시 자세히 살펴보면 원본과 색이 다르게 보이는데 현재 Compres..
Unit은 유니티의 거리 단위이다. 2D Sprite의 Pixels Per Unit은 1 Unit 당 몇 Pixel을 표현할지에 대한 옵션이다. Scene 화면의 눈금 한 칸이 1x1 unit이다. 3D Object의 Scale을 (1, 1, 1)로 설정했더니 딱 1x1 unit이 된다. 256x256 pixel의 2D Sprite를 Pixels Per Unit : 100으로 설정해주면 1 Unit 당 100 Pixel을 그려주므로 256 / 100 = 2.56인 2.56x2.56 unit이 된다. 1x1 unit의 크기로 표현하고 싶다면 256 / 256 = 1 이므로 Pixels Per Unit을 256으로 설정해주면 된다.
코루틴이란? 실행을 일시 중지하고 Unity에 제어권한을 반환한 후 다음 프레임에서 중단했던 위치에서 계속할 수 있는 함수 코루틴의 특징 : 일반적인 함수는 한번 실행이 되면 종료될 때까지 제어권한을 넘기지 않는다. 간단히 말해 어떤 코드를 읽는 동안에는 다른 코드 실행을 할 수가 없다. 반면에 코루틴 함수는 실행 중에 yield 구문이 나왔을 때 Unity에 제어권한을 양도해줘서 다른 코드를 실행하다가 yield 구문의 조건이 끝났을 때 다시 코루틴 함수로 돌아와서 코루틴을 마저 실행한다. 코루틴 형식 : 코루틴 함수는 반드시 IEnumerator 메서드여야 하고, yield return이 한번 이상 반드시 사용되어야 한다. IEnumerator 메서드 형식으로 코루틴 함수를 만들고 StartCorou..
오브젝트 풀링의 사용 이유 : 오브젝트의 생성과 파괴는 부하가 크고, 오브젝트의 파괴는 GC(Garbage Collector : 가비지 컬렉터)를 발생시켜 성능을 저하시킨다. 따라서 게임을 할 때 생성, 파괴가 반복되는 오브젝트들 때문에 일어나는 GC를 방지하기 위해서 오브젝트 풀링을 사용한다. 오브젝트 풀링의 개념 : 풀링을 할 오브젝트 풀 구현 → 풀에 오브젝트 일정 개수를 만들어서 넣어 논다. → 풀에서 오브젝트를 꺼내서 사용 → 사용이 끝나면 다시 풀에 넣는다. → 필요할 때 다시 꺼내서 재사용(모든 오브젝트가 사용 중이라면 새로 생성해서 사용) 유니티 엔진에서의 구현 : using System.Collections; using System.Collections.Generic; using Unit..
싱글톤 패턴이란? 오직 하나의 인스턴스만 생성해 재사용하기 위한 소프트웨어 디자인 패턴 싱글톤 오브젝트 : 게임 매니저, 오디오 매니저 등 게임 내에서 유일하게 오직 하나만 존재하는 오브젝트 싱글톤 패턴의 특징 : 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 어디서든지 그 인스턴스에 접근이 가능 아래는 유니티에서 사용되는 싱글톤 패턴의 예제이다. public class GameManager : MonoBehaviour { public static GameManager instance; void Awake() { if (instance) { Destroy(gameObject); return; } instance = this; DontDestroyOnLoad(gameObject); } } 이런 식으로..
- Total
- Today
- Yesterday
- Level 04
- xcz.kr
- reversing.kr
- 안드로이드
- ftz
- unity2d
- 풀이
- Level 03
- Android
- Advance RCE
- Programming
- c++
- pwnable
- 안드로이드 멘토링
- hackerschool
- C#
- 17th HackingCamp CTF
- HackingCamp
- 유니티
- Unity
- Write-up
- Level 06
- Basic RCE
- Reversing
- Level 01
- 멘토링
- CodeEngn
- Level 02
- wargame
- Level 05
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |