Print Friendly and PDF

Unity 29

[C# 기초이론] 델리게이트와 이벤트 완전 정리

1. 델리게이트(Delegate) 기본 개념정의메서드의 참조를 저장하고 실행할 수 있는 타입입니다. 함수 포인터의 안전한 버전으로 생각할 수 있습니다.사용자 정의 델리게이트 vs Action/Func// 사용자 정의 델리게이트public delegate void PlayerDeathDelegate(Player player, DeathCause cause);// Action 사용 (반환값 없음)public Action onPlayerDeath;// Func 사용 (반환값 있음)public Func calculate;차이점과 선택 기준구분 사용자 정의 델리게이트 Action/Func매개변수 제한무제한최대 16개ref/out 지원가능불가능가독성의미있는 이름 부여제네릭 타입명사용 편의성타입 정의 필요즉시 사용 ..

[3매치 게임] 스코어

이번 시간엔 블록 매치에 성공하면 점수를 획득하도록 하겠습니다. public class UI_Match_Block : MonoBehaviour{ [Header("점수")] [SerializeField] int _score; public int GetScore() => _score; public static event Action _mathcomplte_event; //..이하 생략}- 우선 인스펙터에서 점수를 조정해줍니다. using System;using UnityEngine;public class ScoreManager : MonoBehaviour{ public static event Action _add_score_event;//스코어 획득 이벤트 int _curr..

[3매치 게임] 블록 이동 및 재생성

이번 시간엔 블록이 매치되고 난 후에 블록 이동 후 빈 공간만큼 블록 재생성하는 것을 만들어 보겠습니다.플로우 차트- 이동이나 블록이 매치된 후에 먼저는 있던 블록을 전체적으로 이동 시켜줍니다.- 이동시킨 후 빈 공간만큼 블록을 새로 생성한 후 다시 전체 이동을 진행해주면 끝입니다. 블록 재셋팅 함수 //MatchFiledManager.csasync UniTaskVoid FiledReSetting() { _issetting = true; //모든 기능이 다 종료되었을때 진행 await UniTask.WaitUntil(() => (bool)_match_setting_check_event?.Invoke() == false); //새롭게 생성해야할 블록이 있는지 체..

[3매치 게임] 블록 이동 및 개별 매치

이번 시간엔 블록 이동과 이동된 블록을 기준으로 매치하는 기능을 만들려고 합니다. 이 기능 또한 플로우 차트로 설명하기에 뭔가 난해한 것 같아 글로 간략하게 적거 지나가도록 하겠습니다. 구현 설명:1. 블록 클릭 시 정보를 저장합니다.2. 클릭한 상태로 드래그하여 다른 블록으로 이동하여 해당 블록에 마우스(손가락)이 닿아 Trigger Enter이 됐을 때3. 두 블록의 위치를 이동 시킨 후 매치 기능 실행 코드를 보겠습니다.public void Event_Point_Down() { _point_down_event?.Invoke(this); } public void Event_Point_Up() { _point_up_event?.Invoke(); } ..

[3매치 게임] 3매치 필드, 슬롯, 블록 생성

이번 시간엔 3매치 게임에서의 필드와 슬롯, 블록을 생성하는 걸 만들어보려 합니다. 필드란?- 현재 이 맵을 3x3으로 할지 4x4로할지 데이터를 받아오는 역할로 사용하려 합니다. 슬롯이란?- 블록 뒤쪽에 있는 검정색 슬롯을 얘기합니다. 얘를들어 3x3이면 가로 세로 3개씩 만들어질 것이고 4x4면 4개씩 생성되는 일종의 맵?이라고 보면 될 것 같습니다. 블록이란?- 빨간색 별과 같은 것들을 얘기합니다. 플로우 차트1. 간단한 흐름을 우선 만들었습니다. 필드에서 현재 챕터와 스테이지에 맞는 데이터를 가져옵니다.2. 가져온 데이터를 이용해 슬롯을 만듭니다.3. 슬롯 위치를 기반으로 블록을 최상단에 생성합니다.4. 생성이 완료되었으면 블록을 전체 이동처리한 후 마무리 합니다. 위 흐름을 관리하고 처리하는 건..

[3매치 게임] 3매치 게임 제작

안녕하세요 이번엔 3매치 게임 제작을 진행해보려고 합니다. Git Link : 바로가기 GitHub - leehyoenjong/PuzzleGame: 퍼즐게임 포트폴리오퍼즐게임 포트폴리오. Contribute to leehyoenjong/PuzzleGame development by creating an account on GitHub.github.com 목차1. 3매치 필드, 슬롯, 블록 생성2.블록 위에서 아래로 떨어지는 기능 추가3. 3매치 기능 추가4. 블럭 터치를 이용해 이동 기능 구현5. 빈 블럭만큼 재생성 추가6. 스코어 추가7. 클리어 조건 추가8. 4칸 매치 - 가로,세로 모든 블럭 제거 특수블럭 추가9. 5칸 매치 - 터치한 색 모두 제거하는 특수블럭 추가10. +자 매치 - 정사각형 ..

[디펜스 게임] 패치 서버

이번 시간엔 패치서버 추가를 진행해보려 합니다.Addressable추가 후 Remote모드로 해서 패치 여부 확인한 다음 패치하도록 해보겠습니다. 자세한 어드레서블 내용은 여기를 확인해주세요 Addresaable 추가- Addressable을 추가한 후 그룹 설정을 해줍니다. 이제부터 어떤 것을 패치할지 생각해보겠습니다.일단 DataManager에서 불러오고 있는 테이블 데이터를 패치하면 좋을 것 같아 넣어보겠습니다. 테이블 데이터 어드레서블 추가- Insapertor에 체크하면 Groups에 추가 됩니다.- 추가 후 불러올 각 키 명을 넣어주면 좋습니다. 전체 추가 해보겠습니다.- Skill이나 개별 hero/monster들은 할 필요 없습니다. 왜냐하면 최상단인 Table에서 모두 참조하고 있기 때..

[디펜스 게임] 풀링

게임이 어느정도 완성이 되었습니다. 이제 슬 최적화 작업인 풀링을 추가해보겠습니다.풀링을 간략하게 설명하자면 기존 생성/파괴로 이뤄진 것을 활성화/비활성화로 변경하는 것입니다. 플로우 차트 PoolSystem_Monster 클래스 추가using System.Collections.Generic;using UnityEngine;public class PoolSystem_Monster : MonoBehaviour{ public static PoolSystem_Monster instance; Dictionary> _mon = new Dictionary>(); void Awake() { instance = this; Monster_Base._monster_die_a..

[디펜스 게임] 공격 받을 시 반짝임 효과

이번 시간엔 공격 받았을때 반짝임 효과를 추가하려 합니다. using Cysharp.Threading.Tasks;using UnityEngine;public class HitShimmerController : MonoBehaviour{ [SerializeField] BaseNPC _npc; [SerializeField] SpriteRenderer[] _mysprite; bool _ishitshimmer; void OnEnable() { _npc._hit_event += SetHitShimmer; } void OnDisable() { _npc._hit_event -= SetHitShimmer; } /// /// 공격 받으..

[디펜스 게임] 아이템 드랍

이제 몬스터도 다 만들었으니 이번 시간엔 몬스터가 사망했을때 나오는 GOLD를 제작하려 합니다.몬스터 사망 시 그 위치에 골드를 떨어뜨리고 상단에 있는 골드 위치로 올라가는 것까지 진행 해보겠습니다. 다양한 아이템 획득 하도록 변경[Serializable]public struct St_MonsterTable{ public SO_NPC _npc; [Header("사망시 골드")] public int _diegold;}- 진행하기 전에 현재 사망시 골드를 획득하도록 되어 있습니다. 현재는 골드만 획득 하지만 추후엔 어떤 아이템을 획득하게 될지 모르기 때문에 MID를 이용하고 Value를 따로 두겠습니다. [Serializable]public struct St_MonsterTable{ p..