유니티 로그라이크 문으로 방 연결하기
Unity/Study2023. 12. 18. 17:48유니티 로그라이크 문으로 방 연결하기

📌 연결된 문 생성 📄 Dungeon.cs private void CreateDungeon(){ // 방 생성을 위한 좌표 리스트 List alternativeRoomList = new(); List hasBeenRemoveRoomList = new(); // 특수 방 리스트 List specialRoomList = new(); ... ... ... LinkDoors(); // 방 문이 1개인 경우 => 특수 방으로 추가 foreach (Room room in _roomArray) { if (room != null && room.ActiveDoorCount == 1 && room != currentRoom) {..

유니티 로그라이크 방 생성
Unity/Study2023. 12. 15. 20:50유니티 로그라이크 방 생성

기능 구현GameScene.cspublic class GameScene : MonoBehaviour{ #region Field [SerializeField] private int roomAmount; private Room _roomPrefab; private Room[,] _roomArray = new Room[20, 20]; #endregion #region Init private void Start() { Main.Resource.Initialize(); // #1. 방 생성 _roomPrefab = Main.Resource.GetObject("Room").GetComponent(); CreateLevel(..

유니티 Json 데이터 관리
Unity/Study2023. 12. 12. 21:11유니티 Json 데이터 관리

기능 소개유니티에는 여러 데이터 저장 방식 중, Json으로 데이터를 저장하는 기능을 구현하도록 한다기능 구현DataManager.cspublic class DataManager{ public Dictionary Items = new(); public void Initialize() { Items = LoadJson("ItemData").MakeData(); } private TLoader LoadJson(string path) where TLoader : ILoadData { TextAsset textAsset = Main.Resource.Load(path); return JsonConvert.DeserializeObject(text..

유니티 Stat Modifier
Unity/Study2023. 12. 11. 21:14유니티 Stat Modifier

기능 소개단순 Stat 값을 더하고 빼는게 아닌 Stat Modifier를 통한 관리더티플래그(Dirty Flag) 디자인 패턴 사용기능 구현StatModifierpublic enum StatModType{ Flat, PercentAdd, PercentMult,}public class StatModifier{ public readonly float Value; public readonly StatModType Type; public readonly int Order; public readonly object Source; public StatModifier(float value, StatModType type, int order, object source) ..

유니티 Manager System
Unity/Study2023. 12. 5. 20:19유니티 Manager System

기능 소개플레이어 정보를 관리하기 위해 Manager System 구축Managers를 통해 각 담당 매니저를 인스턴스 하는 클래스 구현 [제너릭 싱글톤]기능 구현제너릭 싱글톤public abstract class SingletonBehaviour : MonoBehaviour where T : SingletonBehaviour{ private static T instance = null; public static T Instance { get { return instance; } } protected virtual void Awake() { if (instance != null) { Debug.LogError(string.Format("허..

유니티 2D 공 충돌 물리엔진
Unity/Study2023. 11. 30. 18:55유니티 2D 공 충돌 물리엔진

2D 공 충돌 물리엔진'알카노이드' 스타일의 공 충돌 물리엔진을 구현하려 한다.기능 소개화면 충돌화면을 덮는 Edge Collider 2D를 생성바닥은 다른 Box Collider 2D로 충돌 시, 공을 파괴시키는 기능을 추후에 넣을 예정 Ball Bound Screenpublic static class Extensions{ /// 카메라 사이즈에 맞는 엣지 콜라이더 바운드 생성 public static void GenerateCameraBounds(this EdgeCollider2D screenEdge) { var halfScreenHeight = Camera.main.orthographicSize; var halfScreenWidth = Camera.main...

유니티 NPC 간단 대화 시스템
Unity/Study2023. 11. 28. 14:59유니티 NPC 간단 대화 시스템

📌 NPC 간단 대화 시스템NPC 근처에 가면 대화 걸기 버튼 생성, 멀어지면 버튼 사라짐버튼을 누르고 대화 시작 📌 구현 결과 NPC 대화창을 구현, 가져올 데이터는 NPC 이미지, 이름, 대화 로그📄 NPCBlueprint.cspublic class NPCBlueprint : CharacterBlueprint{ [SerializeField] private string npcIntro; public string NPCIntro => npcIntro;}캐릭터 설계도를 베이스로 모든 NPC는 대화 인트로를 가지게 설계함임시로 NPC에 설계도를 하나씩 붙여서 데이터를 불러오게 함 => 나중에 리소스 제어로 관리하도록 수정 필요📄 NPC.cspublic class NPC : MonoBehav..

유니티 UI 참석 인원 표시
Unity/UI2023. 11. 27. 20:55유니티 UI 참석 인원 표시

📌 참석 인원 표시하기현재 참석한 인원의 이름을 표시하는 커뮤니티창 구현이름 교체시 커뮤니티에 등록된 이름도 같이 교체 📌 구현 결과  인원 표시 창을 나타내게 하는 버튼과 현재 인원을 표시하는 리스트 창을 만들어 둔다. 📄 UI_Scene_Main.cs private void InitViewCommunity(){ communityShowBtn.onClick.AddListener(ShowCommunity); communityHideBtn.onClick.AddListener(HideCommunity); Manager.Game.CommunityList = communityList; // 등록할 커뮤니티창 게임매니저에서 설정}private void ShowCommunity(){ c..

유니티 UI 캐릭터 정보 변경
Unity/UI2023. 11. 27. 20:52유니티 UI 캐릭터 정보 변경

📌 메인 화면 캐릭터 정보 변경메인 씬에서 캐릭터 정보 변경캐릭터 이미지 교체와 이름 변경 가능 📌 구현 결과 메인 화면 좌측에 Left Side를 구성하고 해당 버튼에 기능을 설명하는 Text를 배치함.버튼을 누르면 해당 패널을 SetActive로 설정하여 패널을 불러오도록 한다.캐릭터 교체 창은 전에 작업했던 로비 씬에서 작업한 에셋을 그대로 가져와서 사용했다.똑같이 토글 방식으로 캐릭터를 누르고 버튼을 눌러서 교체가 가능하다.한가지 추가 기능으로는 선택 창이 활성화 되었을 시, GameState로 플레이어 조작을 제어하고, 교체랑 x버튼 이 외에는 다른 UI 버튼이 누르지 않도록 추가 했다.이름 교체 창도 똑같이 로비 씬에서 작업한 에셋을 그대로 가져와서 사용했다.화면 제어 부분도 위에 선택 창..

유니티 UI 캐릭터 선택 창
Unity/UI2023. 11. 26. 22:32유니티 UI 캐릭터 선택 창

📌 캐릭터 선택 창캐릭터 이미지를 선택하고 선택한 캐릭터가 인게임에 나오도록 구현 📌 구현 결과public enum LobbyStep{ Start, Select, Input, Finish,}우선 캐릭터 생성 순서를 열거형 단계로 나눠서 표현한다.캐릭터 선택창 안에는 ScriptableObject로 저장된 CharacterBlueprint 수 만큼 가져와서 생성된다.📄 CharacterBlueprint.cs[CreateAssetMenu(fileName = "Character", menuName = "Blueprint/Character")]public class CharacterBlueprint : ScriptableObject{ [SerializeField] private ..

image