게임 개발(40)
-
[ 개발 공부 ] 싱글 스레드에서 비동기 방식을 구현하는 방법 in Unity Coroutine
이번에는 Unity Coroutine이 싱글 스레드에서 비동기 방식을 구현한 방법을 알아볼 것입니다. 이를 위해서는 IEnumerator에 대해서 알아야 할 필요가 있습니다.IEnumerator에 대해서 -> 링크 IEnumerator에 대해서 알고있다면, 어느 정도 감이 잡혔을 수도 있는데Unity Coroutine에서 StartCoroutine이 실행하는 메서드는 IEnumerator를 반환합니다.// 대충 클래스 내부private void Start(){ StartCoroutine(DoTest);}IEnumerator DoTest(){ yield return null; // 제어권을 옮기고 다음 LateUpdate부터 조건 체크, 조건이 Null이기에 다음 프레임에 다음 구문이 실..
2024.05.16 -
[ 개발 공부 ] IEnumerator, IEnumerable
IEnumerator는 다른 언어의 Iterator와 비슷한 역할을 하는 열거자입니다.IEnumerator를 알기 위해 IEnumerable부터 알아봅시다. IEnumerable은 인터페이스입니다.이 때 IEnumerable라는 인터페이스는 IEnumerator를 반환하는 GetEnumerator라는 메서드를 구현해야 합니다.public class SceneTitle : IEnumerable{ private string[] _titles = ["Intro", "Play", "Ending"]; // IEnumerable 인터페이스를 구현 public IEnumerator GetEnumerator() { for (int index = 0; index IEnumerable을..
2024.05.15 -
[ 개발 공부 ] 퀵 정렬 ( Quick Sort ) 방법
시간 복잡도: O( n log n ), 최악의 경우 O( n^2 ) > 퀵 정렬 방법하나의 배열에서 피벗 하나를 선택한다. ( 보통 맨 처음 인덱스 ) 선택한 피벗을 기준으로 두 개로 분할하고, 분할된 부분을 퀵 정렬한 다음, 두 개의 정렬된 부분을 합하여 전체가 정렬된 배열이 되게 한다. > 과정퀵 정렬은 다음의 단계들로 이루어진다.분할(Divide): 입력 배열을 선택한 피벗을 기준으로 비균등하게 2개의 부분 배열(피벗을 중심으로 왼쪽: 피벗보다 작은 요소들, 오른쪽: 피벗보다 큰 요소들)로 분할한다.정복(Conquer): 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 순환 호출 을 이용하여 다시 분할 정복 방법을 적용한다.결합(Combine): 정렬된 부분 배열들을 하나의 배열에 합..
2024.05.14 -
[ 개발 공부 ] 여러 가지 데이터 표기법, + Unity 표준 코딩 컨벤션
개발을 하면서 당연한 것처럼 선생님에게 배웠던 private 변수명 앞에 _를 붙이는 방식을 사용하고 있었는데내가 사용하고 있는 데이터 표기법이 무엇이었는지 몰라서 궁금하기도 하고 공부할 겸 쓰는 글이다. Private 변수 선언할 때 _를 붙이는 이유코딩 컨벤션으로 인한 이유 때문이다.간단하게 얘기하자면 코드를 짜면서 이해를 쉽게 하기 위한 규칙이다. 예를 들어 저는 유니티에서 현재메서드에는 파스칼 표기private, protected 변수의 변수명 앞에는 _를 붙이고 카멜 표기 + 약어 사용 지양하기public 변수는 파스칼 표기메서드, 지역 변수에는 카멜 표기클래스는 파스칼 표기인터페이스에는 파스칼 표기, 앞글자에 I를 붙인다.bool 타입 변수는 is, can, have(has) 등의 접두사를 사..
2024.05.12 -
[ 가디언 ] 지식의 수호자 보스
가디언이라는 프로젝트에 나오는 지식의 수호자에 대한 글이다. 시작하면 보스 등장 컷씬이 재생된다. 이후 보스 패턴은피가 일정 수치 이하로 떨어지게 되면 야바위를 실행한다.그리고 보스의 피가 낮을수록 야바위 속도가 빨라진다. 1. 야바위에서 보스를 맞출 경우 야바위에서 5개의 뒤집힌 책 중에서 보스를 찾아 때리면 보스와 싸우게 된다.이 때 보스의 패턴은 3개로1. 탄환을 십자 방향에서 회전해가며 뿌리는 패턴2. 레이저를 십자 방향으로 발사해 회전하는 패턴3. 플레이어 방향으로 레이저를 발사하는 패턴 이 있다. 이후 피를 일정 이하로 때리면 다시 야바위 패턴을 실행한다.이게 맨 처음 제외 3번 반복된다. 2. 야바위에서 보스 이외에 다른 책을 때린 경우 잘못된 뒤집힌 적을 때린 경우, 괴상한 모습의 책이 플..
2024.04.29 -
[ 개발 일기 ] SO, Prefab을 에디터에서 저장하기
최근 졸업 작품에서 이전에 만든 Feedback Player를 사용하는데 문제가 발생했다. [ 개발 일기 ] Feedback Player ( Custom Editor )ㅎ.ㅎ 전에 불값으로 Feedback Player의 Feedback을 키고 끄고 했었는데뭔가 확장할 일이나 Feedback을 추가할 일이 생겼을 때 불편할 것 같아 결국 컴포넌트 형식으로 변경했다. 근데 그렇다고 만들어rivermountain.tistory.com Feedback을 추가하고 저장 후 프리팹을 껐는데 추가한 Feedback이 저장되지 않는 문제가 생겼다. Feedback의 Serialize Value를 수정할 경우에는 저장이 되었기에 한 번 문제에 대해 찾아보았더니EditorUtility.SetDirty()라는 것에 대해 알..
2024.04.26