Print Friendly and PDF

유니티 77

[디펜스 게임 제작] 강화 시스템

화면에 보이는 강화 버튼을 클릭하여 Status를 강화 시키는 시스템을 제작할 것입니다. 방법- 1번 클릭당 1레벨업으로 하여 Manager클래스에 status레벨 저장- 저장한 레벨을 최대 status값을 이용해 레벨당 얼마의 값을 넘겨줄 예정- 넘겨준 값을 이용해 현재 유저의 Status값에 추가 UI_Btn_Status_Upgrade 클래스 제작using System;using TMPro;using UnityEngine;public class UI_Btn_Status_Upgrade : MonoBehaviour{ [SerializeField] ESTATUSUPGRADE _estatusupgradekind; [SerializeField] TextMeshProUGUI _level; [Se..

[이론] 렌더 파이프 라인

렌더 파이프라인 이란?- 씬의 콘텐츠를 가져와 화면에 표시하는 작업을 말합니다.- 수행하는 작업으로는 컬링, 렌더링, 포스트 프로세싱이 있습니다.- 파이프라인은 저마다 기능/성능 특성을 가지고 있으며, 다양한 게임, 앱 및 플랫폼에 적합합니다. 렌더 파이프라인 종류- 빌트인 렌더 파이프 라인 : 유니티의 기본 렌더 파이프 라인으로 커스터마이즈 옵션이 제한적- 유니버셜 렌더 파이프라인(URP) : 쉽고 빠르게 커스터마이즈 가능한 스크립터블 렌더 파이프라인으로, 광범위한 플랫폼에 최적화된 그래픽스 구현 지원- 고해상도 렌더 파이프라인(HDRP) : 스크립터블 렌더 파이프라인으로, 고사양 플랫폼을 위한 최신 고해상도 그래픽스 구현 지원 - Unity의 스크립터블 렌더 파이프라인 API로 커스텀 렌더 파이프라인..

[디펜스 게임 제작] 플레이어, 몬스터 게임 실행 매니저 추가

플레이를 주관하는 PlayManager를 기반으로 해서 PlayerSpawnManager과 MonsterSpawnManager을 추가 진행 PlayManager 클래스 추가 using System;using Cysharp.Threading.Tasks;using UnityEngine;public class PlayManager : MonoBehaviour{ public static event Action _play_event; public static event Action _play_ready_event; public static Action _player_end; //TODO: 모든 스테이지 클리어 처리 필요 public static Action _play_stageclear; ..

[디펜스 게임 제작] 캐릭터 제작

- Player_Base 또한 몬스터와 동일한 구조로 제작 BasePlayer 클래스 추가using UnityEngine;public class Player_Base : BaseNPC{ public virtual void OnSpawn(Vector2 spawnpoint) { transform.position = spawnpoint; base.OnSpawn(); }}- Player는 자기 자리에 서서 공격할 것이기 때문에 MoveController가 필요 없음- spawnpoint로 바로 그 자리에 소환 SO_PlayerPrefab 클래스 추가using System;using System.Collections.Generic;using UnityEngine;[Crea..

[디펜스 게임 제작] 공격 처리

공격 진행을 위해선 "공격 가능 사정거리"가 필요하기 때문에 콜라이더를 씌어주고 "AttackAreaController"를 추가할 계획 AttackAreaController 추가using System;using System.Linq;using UnityEngine;public class AttackAreaController : MonoBehaviour{ [SerializeField] CircleCollider2D _attackarea; [SerializeField] LayerMask _targetlayer; public event Action _enter_active_skill_event; BaseNPC _targetnpc; private void Update() { ..

[이론] 에셋 번들

에셋 번들이란?- 메인 게임이나 앱과 별도로 저장되어 런타임에 로드되는 콘텐츠이다. - 에셋 번들을 통해 필요한 부분만 다운로드 하고 설치가 가능하며 네트워크 및 시스템 리소스에 대한 부담을 최소화 할 수 있다.- 에셋 번들은 출시 후 콘텐츠 업데이트하거나 추가할때도 사용된다. 장점- 출시 후 콘텐츠 업데이트 및 추가 가능- 자동 업데이트 및 프로젝트 간 콘텐츠 재사용 가능*리모트 AssetBundle로 변경 사항을 확인 한 후 로컬에 저장된 에셋 번들을 다운로드 받을 수 있음 배리언트- 배리언트를 이용하여 동일한 이름으로 bundlename을 지을 수 있어, 플랫폼 또는 상황별로 가져올 수 있음- 단, 배리언트를 사용하면 특정 부분만 배리언트로 가져온다가 되지 않고 해당 bundlename의 배리언트를..

[디펜스 게임 제작] 스킬 시스템 제작

스킬 시스템이란?- 하나의 스테이지를 클리어할 때마다 "영웅 능력치 버프" 또는 "영웅 스킬 강화"를 선택지가 존재하는데 그때 사용되는 시스템이다. 스킬 시스템 구조- 템플릿 메서드 패턴을 활용하기 위해 BaseSkill에 기본적인 것들의 정의- 전략 패턴 활용을 위해 성격이 다른 Buff와 Attack을 분리하고 ScriptableObject로 제작- 버프, 공격에 필요한 것들을 개별로 상속받아 각 프리팹에서 불러오는 방식으로 사용*두 패턴과 ScriptableObject를 이용해 중복 코드 및 확장성을 살리고 메모리 절약을 목표로 함 BaseSkill 클래스 추가using System;using UnityEngine;public abstract class BaseSkill : ScriptableObj..

[이론] Addressable

Addressable이란?- Addressable의 주요 기능은 에셋에 주소를 할당하고 런타임에 로드하는 것이다.- 에셋은 앱에 '빌트인'되거나 '로컬'로 캐싱되거나 '원격'으로 호스팅 될 수 있다. 왜 런타임에 로드하는 것이 주요한가?- Unity의 Resources파일에 필요 리소스 들을 넣을 경우 앱을 실행할때 전부 로드해버립니다. 하지만 Addressable의 경우 런타임에서 필요할때 불러올 수 있어 앱의 실행 시간이나 메모리를 효율적으로 사용할 수 있습니다. 에셋 주소- Addressable창에 주소, 카탈로그, 레이어 등 설정이 가능하다- 고유한 주소를 할당하는 것도 좋지만, 굳이 고유할 필요도 없다.Addressable 예시에셋 1: 주소: "plate_armor_rusty", 레이블: "h..

[디펜스 게임 제작] 보호 오브젝트

다음 제작할 것은 보호 오브젝트이다. 보호 오브젝트란?- LOL의 넥서스와 같은 형태로 던전지키기와 같은 개념이며, hp가 0이 되면 게임이 종료된다. using TMPro;using UnityEngine;public class HpBarController_Text : MonoBehaviour{ [SerializeField] TextMeshProUGUI _hptext; const string HPTEXT = "{0}/{1}"; public void Hpbar_Update(int maxhp, int curhp) { _hptext.text = string.Format(HPTEXT, curhp, maxhp); }}- 맵을 일단 대충 만들어 준 후 오른쪽 상단에 Text형..

[이론] UniTask

UniTask : GitLink GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity.Provides an efficient allocation free async/await integration for Unity. - Cysharp/UniTaskgithub.com UniTask란 무엇인가?- UniTask는 Unity 환경에 특화된 고성능 async/await 라이브러리입니다. Unity의 기본 코루틴(Coroutine)과 C# 표준 Task의 단점을 보완하고 대체하기 위해 만들어졌습니다.주요 특징- Unity의 비동기 작업(AsyncOperation 등)과 생명주기 이벤트(Upda..