[UNITY]/TIL: UNITY 79

재미있는 퍼즐 로직 만들기

오늘 팀프로젝트가 끝이 났다.여러가지 재밌는 로직을 만들었는데, 게임에 다양함을 위해 급하게 만들었지만 생각보다 재미있었던8버튼 로직의 코드를 다시 보고 코드리뷰를 하며 복습하는 시간을 가져보겠다. 이 로직은 8개의 버튼이 있고, 각 버튼은 켜고 끌 수 있는 버튼이다.버튼을 조작하면 양옆의 버튼도 함께 조작된다는 규칙이 있어서, 모두 켜거나 끄기 위해서는 약간의 생각이 필요하다. 모두 켠다면 클리어, 모두 끈다면 게임오버로 가정하고 코드를 정리하여 보여주도록 하겠다. 원래는 주석을 달았었는데 이제는 코드를 보며 읽는것이 크게 어려움이 없어져서 (나를 위한것이기에...)코드 예제들을 모두 보여주고 정리를 하는 방식으로 설명하겠다. using UnityEngine;public class ButtonContr..

[UNITY]/TIL: UNITY 2024.11.07

[Unity] JSON유틸리티를 이용한 저장 및 불러오기 시스템

오늘은 팀프로젝트에서 만든 저장 및 불러오기 시스템을 설명하며,나중에 또 좋은 틀로 사용할 수 있을것 같아서 작성하게 되었다. 3가지 슬롯을 만들고 저장 및 불러오기 그리고 저장 된 파일이 없을면 새로운 시작 을 표기하고 싶었고 저장된 슬롯의 파일을 지우는 기능도 만들고싶었다.(욕심이 그득) 우선 코드를 보여주고 설명을 하겠다. public class SaveSlotUI : MonoBehaviour{ public Button[] slotButtons; public TextMeshProUGUI[] slotTexts; public SaveLoadManager saveLoadManager; public TMP_InputField nameInputField; public GameObj..

[UNITY]/TIL: UNITY 2024.11.06

[Unity] JSON 유틸리티 이해하기

오늘은 어제 특강때 공부했던 JSON 유틸리티를 이해해보는 시간을 가져봐야할것같다.. 실제로 예제를 통해 데이터를 저장 및 불러오기를 해볼거다. 우선 데이터 구조를 만들어보자 1. 데이터 구조 만들기[System.Serializable]public class PlayerData{ public string playerName; public int level;}[System.Serializable]을 작성하여 클래스가  JSON 형태로 변환될 수 있게 만들어줍니다.그리고, 클래스에 저장하고자 하는 모든 변수를 정의해줍니다. 2. 데이터 저장 및 불러오기using System.IO; // 네임스페이스 추가using UnityEngine;public class SaveLoadManager : Mono..

[UNITY]/TIL: UNITY 2024.11.05

[Unity] Mathf 함수 정리하기

오늘은 Mathf 함수를 정리해보겠다. 솔직히 자주 쓰인다가 아니라 매일 아니 매시간,, 쓰일정도이다. 어떤 기능이 있는지 한눈에 보고 내가 필요한 로직에 어떤걸 쓰면 적합할지 파악하고 싶기도 하고문제가 생겼을때 이게 정확히 어떤 기능을 했는지 알아야 문제파악이 쉽기때문에 한번에 정리를 해두려고 한다. 기능과 게임개발에 적용할만한 부분, 그리고 예제로 정리해보도록 하겠다. 1. Clamp : 특정 값을 min과 max 사이로 제한한다.ex) 체력, 마나 등의 수치를 0 미만으로 내려가지 못하게 하고 최대치를 지정할 때Mathf.Clamp(value, min, max)  2. Lerp : 두 값(a,b) 사이를 t의 비율에 따라 선형 보간 한다. (1에서 10으로 바뀐다고하면 바로 바뀌는게 아닌 중간지점을..

[UNITY]/TIL: UNITY 2024.11.04

[디자인패턴] 명령패턴

명령패턴이란?행위를 캡슐화하여 큐에 저장하거나 로그로 기록하고, 다시 재실행할 수 있는 패턴이다.이로 인해 행동을 되돌리거나 하는 등의 시스템이 가능해진다. 이게 어떻게 가능한지 이해가 잘 안 된다.. 예제를 보면서 코드의 흐름을 이해해 보자 아이템 거래시스템에 명령패턴을 적용한 예제를 살펴보자  우선 거래명령이 구현해야 할 인터페이스를 정의해 주자.public interface ICommand{ void Execute(); void Undo();} 그리고 거래명령받으면 실제로 아이템을 교환하는 플레이어를 만들자public class Player : MonoBehaviour{ public string playerName; public List inventory = new List()..

[UNITY]/TIL: UNITY 2024.11.01

[C#]딕셔너리를 알아보자

딕셔너리란?딕셔너리는 키와 값으로 데이터를 저장하는 자료구조이다.키를 통해 값을 빠르게 검색하고, 업데이트할 수 있다. 간단한 예제를 살펴보자. 생성 및 추가Dictionary scores = new Dictionary();scores.Add("Player1", 97);검색int score = scores["Player1"];제거scores.Remove("Player1"); 그리고 foreach를 이용하여, 모든 키/값을 반복하여 확인할 수 있다.foreach를 이용하여 키만 검색하기Dictionary scores = new Dictionary { {"Player1", 1}, {"Player2", 2} };foreach (string key in scores.Keys){ Console.WriteLi..

[UNITY]/TIL: UNITY 2024.10.31

[디자인패턴] 이벤트 버스 패턴

요즘 TIL이 디자인패턴 투성이이다.. 최근 특강이 대부분 디자인 패턴에 관한 특강이기 때문이다.너무 좋은 것 같다. 하지만 이해는 잘 안 된다. 배우는 것과 내 것으로 만드는 건 아주 다른 거 기 때문에 자연스러운 걸 지도..?그러면 지금부터 내 것으로 만드는 과정을 살펴보자 이벤트 버스 패턴이란 ?이전에 정리했던 옵저버 패턴을 생각해보자 옵저버패턴은 이벤트를 등록 > 이벤트를 구독 > 이벤트가 발생하면 > 이벤트를 구독하는 메서드를 호출 이런방식이다 이때 "이벤트가 발생하면" 부분의 발생시키는 원인을 발행자 라고 생각하고 아래의 글을 보자 이벤트 버스 패턴은 아래와 같이 작동한다. 다수의 발행자 > 이벤트 버스 > 여러 구독자 옵저버 패턴과 유사하지만, 이벤트를 관리하는 이벤트 버스가 있기 때문에 관..

[UNITY]/TIL: UNITY 2024.10.30

[디자인패턴] 상태패턴

어제도 디자인 패턴에 대한것을 알아봤는데, 어제 전략패턴을 공부하고 상태패턴까지 공부를 할 생각이었기에 상태패턴에 관한 내용을 작성하겠다. 상태패턴은 말 그대로 객체의 상태에 따라 동작을 정의하는 패턴이다. 코드들을 보면서 코드의 흐름을 따라가보자. public interface IPlayerState{ void EnterState(PlayerController player); void UpdateState(PlayerController player); void ExitState(PlayerController player);}  상태 인터페이스를 구현했다.이 상태 인터페이스를 상속받는 idle, move, jump를 구현해보자 public class IdleState : IPlayerSt..

[UNITY]/TIL: UNITY 2024.10.29

[디자인패턴] 전략패턴에 관하여

오늘은 스탠다드반 특강이 있었는데, 매번 특강을 들을 때 마다 사실 벽을 느낀다.내가 이해를 너무 못하고 있는게 아닐까 ? 이걸 다 이해할 수 있는건가 ?물론 이미 알고있고, 이해한 부분도 많지만 이해하기 힘든 부분도 꽤 있었던 것 같다.. ㅎㅎ 그리고 나는 개발자가 벽을 느끼는것은 버그를 만난것처럼 아주 좋은 증상이라고 생각한다.빨리 배우는것이 빨리 고치는것만큼 좋은것같다.항상 이런 이해하기 힘든것을 이해했을때 아 내가 성장하고 있는게 맞구나 라고 느끼는것같다. 그럼 이제 전략패턴에 대해 알아보자. 전략패턴이란 ?알고리즘을 캡슐화 하여 동적으로 교체할 수 있게 하는 코딩규칙이다. 이게 무슨소리냐 ? 나도 모르겠다.. 이해할때까지 계속해서 알아보자. 전략패턴의 개념행위를 정의하는 인터페이스를 만들고, 이..

[UNITY]/TIL: UNITY 2024.10.28

움직이는 플랫폼 및 위에 있는 객체 함께 이동하기

개인 과제를 하던 도중 이것도 만들면 공부에 도움이 될 것 같아 만들었다. 오브젝트를 좌우, 상하 그리고 회전하게 하는 스크립트를 만들었다. 3가지 기능을 모두 넣고 에디터에서 수정하며 재밌는 맵을 만들 수 있게 해두었다. 이렇게 만들고 테스트를 해봤는데 오브젝트는 움직이는데 캐릭터는 혼자 가만히 있어서 마음에 들지 않았다.. 처음에는 트리거를 이용해서 플레이어를 오브젝트의 자식오브젝트에 넣었다가 뺏다가를 반복할까 했는데 이런 방법은 성능적으로 좋지 않아 보였다. 그래서 플랫폼의 움직임에 맞게 플랫폼 주변의 객체를 함께 움직여줄것이다. 설명은 주석을 달아 적도록 하겠다. using UnityEngine;public class MovingPlatform : MonoBehaviour{ public en..

[UNITY]/TIL: UNITY 2024.10.27