반응형

Engine/Unity 9

[Unity] 유니티 이벤트 함수 (Awake, Start, Update, FixedUpdate, LateUpdate 차이점)

유니티에서 C# 스크립트를 생성하면 자동으로 MonoBehavior를 상속받은 스크립트가 생성이 됩니다.이렇게 생성된 스크립트 안에는 내용이 비어있는 Start() 함수와 Update() 함수가 존재하는데 이와 같은 함수를 이벤트 함수라고 합니다. 이벤트 함수는 이외에도 Awake, FixedUpdate, OnEnable 등 다양한 함수가 존재합니다. 초기화를 위한 이벤트 함수에는 Awake와 Start가 있고, 업데이트를 위한 이벤트 함수에는 Update, FixedUpdate, LateUpdate가 있습니다. 이 함수들의 차이점에 대해서 알아보도록 하겠습니다.  Awake vs Start Awake - Start 함수보다 먼저 호출이 된다. - 씬이 시작할 때 오브젝트마다 한 번만 호출된다. - 스크..

Engine/Unity 2024.05.21

[Unity] 유니티 생명주기 (Life Cycle)

유니티에서 스크립트를 생성하고 스크립트를 열어보면 Start 함수와 Update 함수가 있는 것을 볼 수 있습니다. 이러한 함수들을 이벤트 함수라고 하며, 이벤트 함수에는 Start와 Update 말고도 여러 가지 함수가 있습니다. 유니티에서는 이런 이벤트 함수들의 실행 순서를 지정해놓았으며, 실행 순서를 생명주기라고 합니다. 스크립트의 생명주기와 각종 이벤트 함수들을 이해하고 있으면 적절한 상황에 적절한 이벤트 함수를 사용할 수 있습니다.  아래 사진은 유니티 스크립트의 생명주기를 나타낸 다이어그램입니다.스크립트의 생명주기는 크게 3단계로 나눌 수 있습니다.시작 단계 (생성 및 초기화) : Awake, OnEnable, Start업데이트 단계: FixedUpdate, Update, LateUpdate,..

Engine/Unity 2024.05.20

[Unity] TMP 사용방법 / 한글 폰트 깨질 때

유니티에는 텍스트를 표현하기 위해서 Text 혹은 TextMeshPro(줄여서 TMP)를 이용할 수 있습니다. 하지만 기존의 Text는 기능이 제한적이기 때문에 저는 보통 TMP를 사용하는 편입니다. TMP를 사용하는 방법과 TMP 사용 시 한글이 깨질 때 해결방안을 알려드리도록 하겠습니다.  일단 구글 폰트에서 자신이 유니티에서 사용하고자 하는 폰트를 다운로드하여줍니다. https://fonts.google.com/?subset=korean Browse Fonts - Google FontsMaking the web more beautiful, fast, and open through great typographyfonts.google.com 저는 Noto Sans Korean 폰트를 다운로드하였습니다...

Engine/Unity 2024.05.06

[Unity] 오브젝트 이동시키는 방법

유니티에는 오브젝트를 이동하기 위해서 여러 가지 방법을 사용할 수 있습니다. 1. transform.position 오브젝트의 위치를 강제적으로 바꿔서 오브젝트를 이동시키는 방법입니다. 오브젝트의 위치를 특정한 위치로 이동시키고 싶을 때는 아래와 같이 사용이 가능합니다. public class test : MonoBehaviour { // 이동시키고자 하는 좌표를 지닌 Vector Vector3 point = new Vector3(3f, 3f, 3f); void Start() { Move(); } void Move() { // point의 위치로 현재 오브젝트를 이동시킴 this.transform.position = point; } } 방향키를 입력받아서 오브젝트를 이동시키는 방법도 사용할 수 있습니다...

Engine/Unity 2024.04.04

[Unity] Ray / Raycast / RaycastHit (레이캐스트)

유니티에는 특정한 지점에서부터 특정한 방향으로 레이저를 쏘는 듯한 기능을 구현할 수 있는 기능이 있습니다. 레이를 발사해서 레이에 맞은 오브젝트와의 충돌을 감지한다거나, 충돌한 오브젝트에 대해서 상호작용을 할 수도 있습니다. 레이를 이해하고 활용하기 위해서 Ray와 Raycast, RaycastHit에 대해 알아보도록 합시다. Ray, Ray2D Ray는 원점과 방향을 가진 구조체입니다. 여기서 원점이란 Ray가 발사되는 시작 지점을 뜻하고, 방향이란 Ray가 발사되는 방향을 의미합니다. 레이저 포인터를 손에 들고 있다면 제 손에 들고 있는 레이저 포인터의 위치가 Ray의 원점이고, 레이저 포인터에서 레이저가 나가는 방향을 Ray의 방향이라고 생각하시면 됩니다. Ray는 원점과 방향을 Vector3 타입..

Engine/Unity 2024.03.26

[Unity] 싱글톤 패턴 (Singleton)

싱글톤(Singleton) 패턴은 디자인 패턴 중의 하나로, 특정 클래스의 인스턴스를 전역적으로 1개만 생성하여 메모리 절약과 전역적인 액세스를 보장하는 패턴입니다. 유니티에서 싱글톤 패턴을 사용할 수 있는데요. 오늘은 유니티에서 사용하는 싱글톤에 대해서 알아보려 합니다. 유니티에서 싱글톤을 사용하는 이유 유니티에서 다른 스크립트의 내용을 참조하거나, 수정하고 싶을 때 어떻게 하시나요? GetComponent() 형식으로 접근하는 것을 가장 자주 사용하실 겁니다. 혹은 static을 이용할 수도 있겠죠. 예를 들어, GameManager와 같이 게임의 전반적인 로직을 담당하는 스크립트는 다른 스크립트에서 참조를 해서 사용하는 경우가 많은데요. 프로젝트 규모가 커질수록 스크립트마다 GameManager를 ..

Engine/Unity 2024.03.20

[Unity] 스크립터블 오브젝트(Scriptable Object)

스크립터블 오브젝트(Scriptable Object): 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. 스크립터블 오브젝트는 설명 그대로 데이터를 담아 둘 수 있는 컨테이너입니다. 예를 들어서, 우리가 뱀서라이크 게임이나 핵 앤 슬래시 게임 등의 몬스터가 쏟아져 나오는 게임을 만든다고 생각해 봅시다. 몬스터의 필드에는 최대 체력, 공격력, 방어력, 이동 속도 등과 같은 필드들이 있겠죠? 하지만 같은 몬스터들을 10마리, 100마리, 혹은 그 이상을 생성한다면 이미 공통되는 필드들이 겹쳐져서 그만큼 메모리를 낭비하게 될 것입니다. float maxHP; // 4byte float attack; // 4byte float defend; // 4byte float speed; // 4byt..

Engine/Unity 2024.03.18

[Unity] 유니티 직렬화(Serialization)

직렬화(Serialization): 데이터 구조 또는 게임 오브젝트 상태를 Unity가 보관하고 나중에 다시 복구할 수 있는 포맷으로 변환하는 자동 프로세스입니다. 직렬화라는 개념이 상당히 추상적이고 와닿지가 않아서 각종 블로그, 공식 문서 등을 뒤져가면서 찾은 내용을 바탕으로 직렬화에 대해서 쉽게 설명해 보겠습니다. 직렬화는 '어떤 데이터를 읽고, 쓰고, 고치기 쉽게 파일 형식을 변환한 것' 이라고 생각하시면 됩니다. 유니티에서 사용하는 직렬화를 다루기 때문에, 유니티를 예시로 들어서 설명을 해드리겠습니다. 씬에 Cube 오브젝트가 하나 있다고 가정해 봅시다. 그리고 그 Cube 오브젝트를 클릭하면 인스펙터 창에서 해당 Cube에 대한 정보들을 볼 수가 있죠. 기본적으로 붙는 Component들이 있을..

Engine/Unity 2024.03.17

[Unity] 유니티 Attribute(속성)

Attribute(속성): 스크립트에서 클래스, 변수 또는 함수 등의 위에 명시하여 특별한 동작을 나타낼 수 있는 마커입니다. 유니티의 Attribute에는 여러 가지 종류가 있지만, 자주 사용되거나 알아두면 언젠가 쓸모 있을? 몇 가지 Attribute를 살펴보고자 합니다. 1. AddComponentMenu 클래스 이름 바로 위에 AddComponentMenu를 추가해 주면 오브젝트에 Script를 추가할 때, Component 탭에서 해당 Script를 추가 할 수 있게 해 줍니다. // [AddComponentMenu("Root/Name")] [AddComponentMenu("Script/Test Script")] public class TestScript : MonoBehaviour { ... ..

Engine/Unity 2024.03.14
반응형