Beatchoi's Blog

List of Postings

캐릭터 구성하기 - 가상 함수 활용하기
캐릭터 구성하기 - 가상 함수 활용하기

선수포스팅 :: Pre-requisite

캐릭터 구성하기 - 캐릭터 스탯 관리하기

가상함수의 활용 :: Virtual Function

각 캐릭터의 스탯 클래스에 가상함수를 선언하여 해당 클래스를 상속받는 클래스에서 편리하게 호출할 수 있는 함수를 구현해 봅니다.
이번 포스팅에서는 캐릭터의 죽음을 구현해봅니다.

유니티3D 에디터에서

스크립트 생성

먼저 CharStats.cs 스크립트를 다음과 같이 수정합니다.

```ruby using System.Collections; using System.Collections.Generic; using UnityEngine;

캐릭터 구성하기 - 캐릭터 스탯 관리하기
캐릭터 구성하기 - 캐릭터 스탯 관리하기

선수포스팅 :: Pre-requisite

네비게이션 메시(/br)

캐릭터 스텟 관리 :: Character Stats

게임에는 수많은 캐릭터들이 존재하고 각 캐릭터들은 고유의 스텟을 가지고 있습니다. 흔하게는 공격력, 방어력, 체력 등이 있을 수 있을 것이고 더 나아가서는 리스폰 시간이나 이동 속도 등 여러가지 항목들을 가지고 있을 수 있습니다.

이번시간에는 Stat 클래스를 직접 작성하여 캐릭터의 공격 및 죽음을 구현해 보도록 하겠습니다.

유니티3D 에디터에서

스크립트 생성

이번 포스팅에서는 총 4개의 스크립트를 작성해야 합니다.

먼저 Stat.cs 스크립트를 생성하고 다음과 같이 작성합니다.

자동으로 길찾기 - 네비게이션 메시(Navigation Mesh)
자동으로 길찾기 - 네비게이션 메시(Navigation Mesh)

네비게이션 메시 :: Navigation Mesh

스타크래프트에서 유닛을 지정된 장소로 보내게 되면 뚫려있는 길을 따라 알아서 찾아갑니다. 막혀있는 길을 돌아서 가고 갈수 없는 지형은 최대한 가까이 접근하죠.
최근 자동사냥이나 방치형 RPG 모바일 게임에서도 마찬가지입니다. 캐릭터가 알아서 NPC를 찾아가고 몬스터를 찾아 사냥을 합니다.
찾아갈때 장애물이 있으면 피해서 가고 지정된 길을 통해 최적의 길을 찾아갑니다.
유니티에서도 해당 기능을 Navigation Mesh를 통해 구현할 수 있습니다. 간단한 몬스터의 이동이나 캐릭터의 이동반경등을 지정해 봅시다.

유니티3D 에디터에서

프로젝트 생성 및 세팅

유니티 프로젝트를 생성하고 유니티 기본도형을 활용하여 기본 스테이지를 생성해 봅시다.
캐릭터가 걸어다닐 수 있는 길은 Plane오브젝트로, 장애물은 Cube, 경사로는 Plane 또는 Cube로 구현해 봅니다.
캐릭터 오브젝트 역시 Capsule로 간단하게 생성합니다.


<01. 스테이지 생성>


<02. 스테이지 생성>

유니티 코딩 기법 - 싱글톤
유니티 코딩 기법 - 싱글톤

싱글톤 :: Singleton

유니티를 이용해 콘텐츠를 개발하다보면 다른 스크립트에 있는 변수나 함수를 참조하거나 호출해야 하는 경우가 생깁니다.
처음에는 Public GameObject변수를 선언하여 호출하고자 하는 함수나 변수를 가지고있는 오브젝트를 연결시키고,
해당 오브젝트의 컴포넌트에 GetCompoent로 스크립트 컴포넌트에 접근하여 변수나 함수에 접근하실 것입니다.
대부분 이러한 불편함을 해소하기 위해서 싱글톤이라는 개념을 처음 접하게 되실겁니다.
물런 싱글톤의 주 목적이 외부에서의 참조만을 위한 것이라고 보기는 힘들지만 첫 접근을 위한 방편으로 생각하는 것도 나쁘지 않을 것 같습니다.

유니티3D 에디터에서

스크립트 생성

프로젝트 창에서 Singleton.cs 스크립트를 생성합니다.
Singleton.cs스크립트를 열어 다음과 같이 작성합니다.

콘텐츠 개발 기법 - 오브젝트 풀링(Object Pooling)
콘텐츠 개발 기법 - 오브젝트 풀링(Object Pooling)

오브젝트 풀링 :: Object Pooling

우리가 콘텐츠를 개발할때 매우 많은 수의 오브젝트를 다루는 상황에 직면하곤 합니다. FPS게임의 총알이나 매 라운드 생성되는 몬스터 같이 말이죠.
하지만 오브젝트가 필요한 매 순간마다 해당 오브젝트를 생성하고 제거하게 된다면 어플리케이션 내 과부하가 일어나게 됩니다.
오브젝트의 생성과 제거는 의외로 리소스를 많이 잡아먹는 행위이기 때문입니다.
이를 구조적으로 해결하기 위해 보통 오브젝트 풀링이라는 기법을 활용합니다.
오브젝트 풀링이란 간단하게 말해 오브젝트를 콘텐츠 시작단에 미리 필요한만큼 생성시켜놓고 보이지 않는 어딘가 숨겨놓습니다.
그리고 필요할 때마다 생성시켜놓은 오브젝트를 불러와서 활용하고 활용하고 난 뒤에는 제거하지 않고 다시 원위치 시켜놓는 것입니다.
이렇게 오브젝트를 관리하게되면 시작단에 생성시킬 때를 제외하고는 오브젝트의 생성과 제거를 진행하지 않기 때문에 효율적인 리소스 관리를 할 수 있습니다.

유니티3D 에디터에서

스크립트 생성

프로젝트 창에서 ObjectPool.cs 스크립트를 생성합니다.
오브젝트 풀링을 구현하는 ObjectPool.cs스크립트를 열어 다음과 같이 작성합니다.

Latest Posts

LightshipAR SDK 활용하기 - Maps SDK의 활용
LightshipAR SDK 활용하기 - Maps SDK의 활용

ARDK Maps SDK

Lightship의 geofencing 기능을 구현할 수 있는 Maps SDK 활용법을 알아봅니다.

콘텐츠 개발

프로젝트 세팅

본 포스팅은 ARDK 3.9 버전, Maps SDK 0.4 버전을 기준으로 작성합니다. 이전 포스팅을 참조하여 SDK를 임포트 합니다.

Top Down Map

  1. 네이버 지도같은 일반적인 탑-다운 맵을 구현해 봅니다.

Unity3D에서의 UI - Rect Transform
Unity3D에서의 UI - Rect Transform

Unity UI RectTransform :: 개요

UI 객체들의 위치, 크기, 기준점 등등을 담당하는 Rect Transform에 대하여 알아봅니다.

Unity3D에서의 UI - UI의 구성
Unity3D에서의 UI - UI의 구성

Unity UI :: 개요

Unity UI는 게임 및 애플리케이션용 사용자 인터페이스를 개발하는 데 쓰이는 간단한 UI 툴킷입니다. Unity UI는 게임 오브젝트 기반 UI 시스템으로, 컴포넌트와 게임 뷰를 사용하여 사용자 인터페이스를 배열하고 위치와 스타일을 지정합니다. Unity UI는 Unity 에디터 내 사용자 인터페이스에 대해 사용할 수 없습니다.https://docs.unity3d.com/kr/2019.1/Manual/UIToolkits.html