전체 글 89

이터레이터 메서드

yield return을 사용하는 이터레이터 메서드란 C#에서 반복적인 데이터를 순차적으로 반환하는 메서드를 의미합니다.이 메서드는 yield return 키워드를 사용하여 값을 하나씩 반환하고, 다음 값이 필요할 때마다 메서드의 실행을 다시 재개할 수 있습니다.즉, 이터레이터 메서드는 한번에 모든 데이터를 반환하는 것이 아니라, 필요할 때마다 값을 하나씩 반환하는 방식으로 동작합니다. 이터레이터 메서드의 특징**yield return**을 사용하여 데이터를 순차적으로 반환합니다.IEnumerator 또는 **IEnumerable**를 반환하는 메서드입니다.각 yield return 이후 메서드는 현재 상태를 기억하고 있다가, 다음 호출 시 이전 상태에서 이어서 실행됩니다. 이터레이터 메서드의 동작 과정..

프로그래밍/C# 2024.10.05

yield return

yield return은 C#에서 반복자(iterator) 또는 코루틴을 쉽게 구현할 수 있도록 돕는 키워드입니다.이를 사용하면 함수의 실행을 잠시 중단하고, 중단된 위치에서 다음 호출 시 다시 실행을 재개할 수 있습니다. 주로 IEnumerable, IEnumerator와 함께 사용되어 요소들을 순차적으로 반환하거나, 유니티에서 코루틴을 구현하는 데 사용됩니다. 주요 기능* 중단점 제공yield return은 함수의 실행을 일시적으로 멈추고, 값을 반환합니다.다음 번에 이 함수를 호출하면 이전에 멈췄던 지점에서 다시 실행을 시작합니다. * 반복자 생성yield return은 자동으로 IEnumerator를 구현하여 값을 순차적으로 반환합니다.이를 통해 반복자 패턴을 손쉽게 구현할 수 있습니다. * 비동..

프로그래밍/C# 2024.10.04

유니티는 어떻게 Coroutine 을 처리하는가

유니티의 코루틴 시스템이 **WaitForSeconds(2)**를 만나면, 유니티 엔진의 내부 스케줄링 시스템에 의해 작동하게 된다. 구체적으로는 어떤 일이 일어나는지 그 과정에 대해서 알아보자. 1. WaitForSeconds는 유니티의 대기 시간 요청을 표현WaitForSeconds는 유니티에서 제공하는 클래스로, 특정 시간만큼 코루틴을 일시 중단하고, 그 시간이 지나면 다시 코루틴이 실행되도록 합니다.코루틴 함수가 yield return new WaitForSeconds(2)를 만나면, 유니티는 그 코루틴의 실행을 2초 동안 대기 상태로 전환합니다.2. 유니티의 코루틴 스케줄러유니티 엔진은 코루틴 스케줄러를 통해 매 프레임마다 코루틴을 관리합니다.코루틴이 WaitForSeconds와 같은 대기 객체..

배열 초기화

배열을 초기화 하는 몇 가지 방법에 대해 알아보자  1. 정수형 배열 선언과 동시에 초기화int[] numbers = { 1, 2, 3, 4, 5 };   2. 문자열 배열 선언과 동시에 초기화string[] names = { "Alice", "Bob", "Charlie" };  3. 명시적으로 배열 크기를 지정하면서 초기화int[] numbers = new int[3] { 10, 20, 30 };   4. 명시적인 배열 타입과 함께 초기화int[] numbers = new int[] { 1, 2, 3, 4, 5 };

프로그래밍/C# 2024.10.04

for 와 foreach 비교

둘 다 데이타를 반복 처리를 하는 점에서는 비슷하지만, 다루는 방식에서 몇 가지 차이가 있다. 차이점1. for 는 루프 중에 각 요소를 수정할 수 있는 반면, foreach 는 읽기 전용이다.2. for 는 증감을 제어할 수 있지만, foreach 는 처음부터 끝까지 순회한다.3. foreach 는 IEnumerable 를 구현한 컬렉션에서만 사용 가능하다. - 배열 [], List, Dictionary , yield return 을 사용하는 이터레이터 메서드 등을 포함한다.4. foreach 는 인덱스를 다루지 않기 때문에 코드가 더 간결하다. 결론적으로for 문은 인덱스 제어가 필요하거나 반복 범위를 직접 조절하고 싶을 때 적합하다.foreach 문은 컬렉션의 요소를 간단하게 탐색하고, 수정할 필요..

프로그래밍/C# 2024.10.03

배열[], ArrayList, List<T> 의 각 기능과 차이점

모두 여러 개의 데이타를 저장하고 관리하는 기능을 제공하는 자료구조로 기본적인 목적은 유사하다.다만 몇가지 중요한 차이점이 있기 때문에 장, 단점을 살펴 상황에 맞게 사용하면 된다. 배열 [ ]  * 고정 크기 - 배열은 생성할 때 크기가 고정되며, 생성 후에는 크기를 변경할 수 없습니다.* 타입 지정  - 배열은 특정 타입의 데이터를 저장할 수 있습니다. 예를 들어, int[]는 정수만 저장할 수 있습니다.* 빠른 접근 :  - 배열은 메모리 상에서 연속된 공간을 사용하기 때문에 인덱스를 통해 빠르게 데이터에 접근할 수 있습니다.  int[] numbers = new int[3]; // 크기가 3인 배열 생성 numbers[0] = 1; numbers[1] = 2; numbers[2] = 3; Arra..

프로그래밍/C# 2024.10.03

ScriptableObject

스크립트 파일을 Asset 형태로 만든 Object.주로 Data 를 처리하기 위해 사용하며 각 field를 에디터에서 편집할 수 있다. 이를 위해서 class MoneBehaviour 대신 ScriptableObject 를 상속받는다.따라서 GameObject 에 Component 로 추가할 수 없고 Asset 형태로 존재하게 된다.또한 쉽게 메뉴에서 생성할 수 있도록 CreateAssetMenu() 로 정의해준다.  Class 에 Data 구조를 작성하면, 객체마다 해당 Data 크기만큼 메모리에 할당하게 된다.한 두개의 객체를 생성한다면 문제될 게 없지만, 수많은 객체를 선언해야 할 때는 메모리를 낭비하게 된다.이 때 생성된 객체가 ScriptableObject의 Data 를 참조하게 만든다면 이러..

int 와 Int32

AliasC# 컴파일러는 int 를 System.Int32 로 자동 매핑한다.이것을 C# 의 기본 자료형에 대해 미리 정의된 '약칭 (alias)' 이라고 한다.즉, int 는 System.Int32 의 약칭이며, 이 둘은 동일한 메모리 크기와 동일한 표현 범위를 갖는다. 다른 예로는 아래와 같은 것들이 있다.float : System.Singledouble : System.Doublebool : System.Boolean Int32 구조체에는 다음과 같은 코드가 있다.public const Int32 MaxValue = 2147483647; public const Int32 MinValue = -2147483648; 이와 같은 이유로int.MaxValue 는 정수형의 최대값을, int.MinValue ..

프로그래밍/C# 2024.10.02

오타이 쇼헤이 52 - 52 달성

52 - 52 를 달성한 오타니. 그 전부터도 이 선수의 인생 스토리는 너무 유명해서 잘 알고 있었지만,오늘 본 영상은 나에게 작은 울림을 주었다. 지금와서 돌이켜보면,최근 몇 년간의 나는 확실히 그 이전의 나와는 다른 길을 걷고 있었다. 그 결과 나는 지금 목표를 잃어버렸고 인생의 반환점에서 표류하고 있는 중이다.  그 동안 나와 비슷한 상황에 놓인 사람들의 이야기나 심리학자, 뇌과학자, 유명한 강연자, 목사님, 심지어 스님의 이야기들은 나에게 위로는 되었지만, 자극제가 되지는 못했다. 인생에는 타이밍이라는게 있다. 대부분 아는 내용이기는 하지만, 지금 내게는 위로보다는 자극이 필요했었나보다.  https://www.youtube.com/watch?v=xmltcf-Hwtc&t=1s 나중에 넷플릭스에서 ..

일상 2024.09.22

짱게임 - 이거 어떻게 없애냐?

언젠가부터 크롬 을 열면 '짱게임' 이라는 페이지가 계속 뜬다.무시하려고 했는데 계속 떠서 짱난다. 그래서 알아봤다. 크롬 설정에 들어가서 개인 정보 보호 및 보안 선택 후 사이트 설정 선택 사이트 전체에 저장된 권한 및 데이터 보기 선택  이렇게 하면 최근 방문 페이지들이 뜨는데...이 중에서 찾다보면 발견할 수 있다. 과감히 휴지통으로.!!뭔가 속이 다 시원하다.

잡다구리 2024.09.21