본문 바로가기

게임 프로그래밍/유니티(2021.3 LTS) 강좌21

유니티 UI - Anchor, Pivot, Position 1. Anchor Anchor 는 부모 RectTansform 의 범위 안에서 UI 객체가 고정될 위치를 지정해 줍니다. 만약 상위 RectTransform 객체가 Canvas 이면 Anchor는 화면 크기의 범위 안에서 현재 UI 객체가 고정될 위치를 지정해 주는 것입니다. Anchor 는 대상 범위의 실제 크기가 얼마인지에 상관없이 항상 0~1 사이의 상대 값으로 표시됩니다. 이해를 돕기 위해 간단한 실험을 해보도록 하겠습니다. 테스트 환경은 아래의 이미지와 같이 Canvas 객체 아래에 ParentRect 를 만들고 그 자식으로 Button을 추가했습니다. Button 의 Inspector 창을 보면 Anchors 가 모두 0.5 로 되어 있습니다. 이 의미는 Button UI 객체의 부모인 Par.. 2022. 11. 21.
[유니티 기초] 코루틴 (Coroutine) 유니티 스크립트에서 일반 함수와 코루틴의 차이는 다음과 같습니다. 일반 함수 → 함수가 호출된 현재 프레임에서 함수의 내용을 모두 처리 코루틴 → 여러 프레임에 걸쳐 처리 코루틴에서는 "yield return ..." 구문을 만나면 여기서 제시된 조건 동안 코드 수행의 제어권을 유니티에게 반환하고 코루틴 함수는 잠시 중단됩니다. 이후 다른 프레임에서 중단된 코드를 이어서 수행할 수 있게 됩니다. (조건에 대한 자세한 내용은 이글의 하단에 있습니다.) 코루틴 함수는 다음과 같은 규칙으로 사용할 수 있습니다. IEnumerator 라는 반환 값을 갖는 함수로 작성해야 합니다. 코루틴 함수 내부에 반드시 yield 키워드가 한 번 이상 사용되어야 합니다. 코루틴 함수는 StartCoroutine 을 사용해 호.. 2022. 10. 26.
[유니티 기초] 게임 실행 중 프리팹 오브젝트 생성 게임 실행 중에 슬라임 생성 이번엔 Slime 프리펩을 이용하여 게임 실행 중에 슬라임들을 생성해 보도록 하겠습니다. ▶ Hierarchy 창에 새로운 빈 오브젝트를 생성합니다. 빈 오브젝트의 이름을 SlimeSpawner 로 변경합니다. ▶ SlimeSpawner 에 스크립트 컴포넌트를 추가합니다. 이름은 똑같이 SlimeSpawner로 생성합니다. ▶ 스크립트에 다음의 코드를 작성합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class SlimeSpawner : MonoBehaviour { public Transform slimePrefab; // Start is called befor.. 2022. 10. 25.
[유니티 기초] 프리팹 (Prefab) - 동기화 유니티의 프리팹은 게임 오브젝트를 재사용할 수 있는 에셋으로 만들어줍니다. 단순히 복사하는 것과 다르게 프리팹을 이용해 씬에 만들어진 프리팹 오브젝트들은 동기화를 할 수 있습니다. 여기서 동기화란 동일한 프리팹으로부터 만들어진 객체는 프리팹을 수정하면 모든 객체가 동일하게 수정된 사항을 반영한다는 의미입니다. 유니티에서는 게임 실행 중 객체를 생성해야 하는 경우에 프리팹을 이용해 생성해야 합니다. 슬라임 프리팹 만들고 동기화 해보기 먼저 새로운 프로젝트를 만들어 보겠습니다. 새로운 프로젝트를 만드는 법을 모르신다면 아래의 링크를 따라 진행하시면 됩니다. https://ugames.tistory.com/4 [유니티] 새 프로젝트 생성과 기본 UI 유니티는 아래의 이미지와 같이 유니티 Hub를 통해 새로운 .. 2022. 10. 25.
[유니티 기초] 에셋 스토어 (Asset Store) 사용 에셋 스토어는 유니티의 꽃이라 할 수 있습니다. 유니티 초창기 시절 유니티의 에셋 스토어 정책 덕분에 많은 사람들이 1인 개발을 실현할 수 있었습니다. 에셋 스토어는 애플의 앱스토어나 구글의 구글 플레이와 같이 개발에 필요한 여러 가지 에셋들을 사람들끼리 거래할 수 있는 공간입니다. 프로그램은 잘하는데 그림에 약하다거나 3D 모델링은 잘하는데 프로그래밍에 약하다거나 하면 이 에셋 스토어를 이용해 부족한 부분들을 매울 수 있습니다. 많은 무료 에셋도 있지만 강력한 기능이나 퀄리티를 자랑하는 유료 에셋도 메가 번들 판매를 잘 활용하면 저렴하게 구입할 수 있습니다. 여기서는 에셋 스토어를 어떻게 이용하고 구매한 에셋을 유니티 프로젝트에 적용시키는지에 대해 알아보도록 하겠습니다. 먼저 에셋스토어는 브라우저에서 .. 2022. 10. 24.
[유니티 기초] 충돌 처리 (Rigidbody, Colliders) 게임에서 충돌 처리는 매우 중요한 요소입니다. 유니티에서는 이러한 처리를 위해 Rigidbody 와 BoxCollider, CapsuleCollider 등의 Collider 컴포넌트를 제공해 줍니다. 1. Rigidbody Rigidbody 는 GameObject 를 물리 엔진 기반으로 동작할 수 있게 합니다. 인스펙터 창에서 [Add Component > Physics > Rigidbody] 를 선택하여 컴포넌트로 추가할 수 있습니다. Rigidbody를 추가한 후 게임을 실행하면 해당 오브젝트가 밑으로 떨어집니다. 이는 물리 엔진의 중력이 적용됐기 때문입니다. 아래의 링크는 Rigidbody 에 대한 유니티 공식 매뉴얼입니다. 한글로 잘 정리되어 있으니 참조하시기 바랍니다. https://docs.u.. 2022. 10. 21.