게임 개발/개발 공부(13)
-
[ 개발 공부 ] Unity Coroutine의 동작 원리 및 특징
혹여나 틀린 점이 있다면 댓글로 피드백 해주시면 감사하겠습니다. > Unity Coroutine의 동작원리Key Point!어떻게 싱글 스레드로 비동기 방식을 구현하는가?어느 주기에 실행되는가?IEnumerator는 무엇인가?> 코루틴의 동작 원리 요약1. MonoBehaviour를 상속받은 스크립트에서 StartCoroutine으로 실행한다.2. StartCoroutine으로 실행된 IEnumerator 메서드는 yield return시 제어권한을 유니티에 반환한다.3. 이후 유니티 라이프 사이클에 있는 LateUpdate에서 yield return의 조건을 충족하는 지 확인한다.4. 조건이 충족된다면, 나머지 구문을 실행한다.이러한 동작을 우리는 코루틴이라고 부른다. + 정보제어권한은 유니티 내부에 ..
2024.05.17 -
[ 개발 공부 ] 싱글 스레드에서 비동기 방식을 구현하는 방법 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 -
[ 개발 공부 ] Obsidian
개발 공부가 맞는가 싶지만, 개발할 때 자주 쓸 거 같으니 일단 개발 공부 목록에 넣어봤다. Obsidian 친구에 적극적인 권유로 Obsidian을 설치 후 깔아보았다. 개인적인 Obsidian 장점에 대해서 얘기해볼 예정이다. Obsidian에 대한 정리 글을 원한다면 아래 링크를 참고하길 바란다. [Obsidian] 친구가 정리한 글이다. 장점 일단 장점이 몇 개인가 있는데 1. 메모장보다 좋다! 일단 자신이 적은 메모를 이런 식으로 정리할 수 있다. 이게 생각보다 편하다. 그리고 사진도 넣을 수 있고, 표도 만들 수 있는데 사용할 때 메모장처럼 쓰기 편하다는 점이 좋다. 워드나 한글은 사용할 때 뭔가 귀찮다. 2. 추가 기능이 많다! 추가 플러그인을 설치할 수 있는데 다양한 기능들이 있다. 예를 ..
2023.10.24