CH.개인기록 노트

전체 글 25

Unity 상태 패턴

상태패턴을 모를 땐 enum으로 나열하고 코루틴으로 상태를 전환했다.하지만 이는 유지보수에 불리하고 나중엔 알아먹지 못하는 현상이 발생한다. 그러니 상태패턴을 사용하자.using System.Collections;using System.Collections.Generic;using UnityEngine;public interface IState{ void OnStart(); void OnExit(); void OnExecuteUpdate();}public class MonsterState : IState{ public virtual void OnStart() { } public virtual void OnExit() { } public virtual void OnExecu..

C#은 처음이라 2024.08.06

Unity 커맨드 스킬 구현

이번에 2D 개인 프로젝트를 진행하면서 제일 중요하고 필수요소였던 파트이다. 닌자 베이스볼에서 필수적인 커맨드 스킬을 구현하고자 했는데..참고할 자료도 별로 없어서 힘들었지만 얼렁뚱땅 구현에 성공했다. 스킬을 사용할 때 키보드 오른쪽 화살표와 Z를 눌렀을 때 스킬이 발동되도록 만들고자 했다.그래서 Queue를 사용해서 만들었다.public KeyCode skillKey = KeyCode.Z; // 스킬을 발동할 키 설정public KeyCode directionKey = KeyCode.RightArrow; // 스킬을 발동할 방향키 설정private Queue skillInputQueue = new Queue(); // 스킬 입력을 위한 큐private Animator animator;public Gam..

Unity 2024.04.25

Unity 코루틴(Coroutine)

대부분의 경우 메서드를 호출하면 실행을 완료한 뒤 호출한 메서드에 제어와 선택적 반환값을 리턴해야 한다. 즉, 메서드 내에서 발생한 모든 행동은 단일 프레임 업데이트 내에서 발생해야 한다. ->코루틴을 사용하면 작업을 다수의 프레임에 분산할 수 있다. 유니티에서 코루틴은 실행을 일시 정지하고 제어를 유니티에 반환하지만 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드이다. IEnumerator Routine() { Debug.Log(0); yield return new WaitForSeconds(1f); Debug.Log(1); yield return new WaitForSeconds(1f); Debug.Log(2); yield return new WaitForSeconds(1f); Debug.Log..

Unity 2024.04.01

Unity 게임 오브젝트

게임 오브젝트(GameObject)는 씬을 구성하는 오브젝트이며 게임에 존재하는 모든 오브젝트는 게임 오브젝트이다. 씬에 존재하여 눈에 보이는 물체 또는 눈에 보이지 않는 기능을 위한 구성품.실질적 기능은 컴포넌트가 수행한다. 1.게임 오브젝트의 구조 Transform : 게임 오브젝트의 위치,회전 및 크기를 나타낸다.게임오브젝트가 월드에서 어디에 있는지를 결정한다. Component : 게임 오브젝트에 부착되는 다양한 컴포넌트이다.예를 들어 Rigidbody 컴포넌트는 물리적인 특성을 추가한다.즉 게임 오브젝트에 기능을 추가하는 것이다. 2.게임오브젝트의 구성요소 name : 게임오브젝트 이름 active : 게임 오브젝트의 활성화 여부.비활성화인 경우 씬에 없는 게임 오브젝트로 취급함. static ..

Unity 2024.04.01

C#으로 간단한 콘솔 게임 제작기(4일)

일주일간 C#으로 지금까지 배운 내용들을 활용하여 text rpg를 구현해봤다. 기획 단계에서 나름 기능 명세서와 다이어그램을 만들어봤지만..만들다보니 '이 기능엔 이것도 필요하지 않을까'라는 생각이 많이 들었고 그대로 코드 박치기를 한 결과..결국 스파게티 코드가 돼버렸고 작동하던 기능들도 멈춰버리는 상황이 발생했다. 최대한 기한안에 고쳐보려 시도했지만 몇몇 기능들은 살리지 못하고 제출했다,, 다음 프로젝트땐 명세서를 더 꼼꼼히 작성하고 변경사항이 있다면 그때그때 문서화 하는 습관을 들여야겠다. 컨셉을 옛날 메이플스토리로 잡고 제작했다. 최종본

포트폴리오 2024.03.26

C# 트리,이진탐색트리(bst)

트리(tree) 트리는 계층적인 자료를 나타내는 자료구조이다. 부모 노드가 여러 자식 노드들을 가질 수 있는 1대 다 구조임. 트리의 구성요소 부모 : 루트(root)노드 방향으로 직접 연결된 노드 자식 : 루트노드 반대 방향으로 직접 연결된 노드. 뿌리(root) : 부모 노드가 없는 최상위의 노드. 트리당 하나만 존재함 가지(branch) : 부모노드와 자식 노드가 모두 있는 노드.트리의 중간에 존재한다 길이 : 출발 노드에서 도착노드까지 거치는 수 깊이 : 루트 노드부터의 길이 차수 : 자식 노드의 개수 이진탐색트리(BinarySearchTree) 이진트리는 부모 노드가 자식 노드를 최대 2개까지 가질 수 있는 트리이다. 이진탐색트리는 이진속성, 탐색속성을 적용한 트리이다. 탐색 위 그림처럼 루트 ..

C#은 처음이라 2024.03.14

C# 리스트(List)

리스트(List)는 동적배열 기반 자료구조이다. 앞선 스택과 큐와는 다르게 중간에 데이터를 삽입,삭제 할 수 있다. 배열과 비슷하지만 리스트가 자료의 입출력이 더 자유롭고 크기를 미리 정하지 않아도 되기 때문에 편리하다. 리스트 생성 및 초기화 List list = new List(); 삽입과 삭제 List list = new List(); list.Add("0번 데이터");//배열 안에 값 삽입 list.Add("1번 데이터"); list.Add("2번 데이터"); list.Add("3번 데이터"); list.Add("4번 데이터"); foreach(var item in list) { Console.Write(item+" -> "); } list.Insert(1,"중간 데이터 1번"); list.Ins..

C#은 처음이라 2024.03.13

C# 자료구조 (큐Queue)

큐(Queue)는 선입선출(First in First Out)구조로 먼저 추가된 요소가 먼저 제거되는 데이터 구조이다. 그림처럼 들어왔다가 들어온 순서대로 나가는 구조임. 큐의 멤버 함수 Enqueue : 요소를 큐의 맨 뒤에 추가한다. Dequeue : 큐의 맨 앞에 있는 요소를 제거하고 반환한다. 장점: 들어온 순서를 유지하기 때문에 순서에 따라 처리하는 작업에 유용하다.(ex.롤 대기열) 큐는 크기가 제한되지 않기 때문에 동적으로 크기가 조정 가능하다. 단점: 큐가 커질수록 요소를 추가하거나 제거하는 데에 시간이 걸릴 수 있다. using System; namespace QueueImplementation { public class Queue { private const int MAX_SIZE = ..

C#은 처음이라 2024.03.12

C# 자료구조(스택)

스택은 LIFO(last in first out)구조로 마지막에 들어온 데이터가 제일 처음 나가는 자료구조이다. 스택의 멤버 함수로는 Push : 스택 안에 데이터를 넣는다. Pop : 스택 안에 저장된 데이터를 꺼낸다. Peek : 가장 상단의 데이터를 꺼낸다. 등이 있다. 스택의 장점 : : 간단한 구조로 인해 사용이 용이하다. 요소의 추가 및 제거가 빠르다. 재귀 알고리즘 및 메모리 관리에 유용하다 단점 : 고정된 크기때문에 동적 크기 조정이 어렵다 중간에 있는 요소에 접근이 불가능하다. 스택 관리를 잘못하면 오버플로우가 발생할 수 있다. using System; using System.Diagnostics; using System.Collections.Generic; namespace _0312 ..

C#은 처음이라 2024.03.12