프로그래밍 39

StartCoroutine

StartCoroutine()**은 코루틴을 유니티의 코루틴 스케줄러에 등록하는 함수입니다.이렇게 등록된 코루틴은 유니티의 업데이트 루프에 따라 실행되며, 지정된 작업을 프레임 단위로 처리하게 됩니다. 코루틴의 동작 방식코루틴은 프레임 단위로 실행되며, 유니티의 게임 루프에 맞춰 나눠서 실행됩니다.코루틴은 한 번에 모든 작업을 끝내지 않고, yield 키워드를 통해 중간에 멈추고 다시 실행을 재개할 수 있습니다.**StartCoroutine()**을 통해 코루틴을 스케줄러에 등록하면, 유니티는 매 프레임마다 해당 코루틴이 실행할 부분이 있는지 확인하고, yield에 따라 다시 재개할 시점을 결정합니다.  간단한 예시: 코루틴 스케줄링 public class CoroutineExample : MonoBeh..

event 와 delegate

이벤트 (Event)이벤트는 특정 작업이 발생했을 때 시스템이 알려주는 메커니즘입니다. 일반적으로 사용자 인터페이스에서 많이 사용되며, 사용자가 버튼을 클릭하거나 키보드를 누르는 등의 상호작용이 발생할 때 이벤트가 발생합니다. 이벤트는 델리게이트를 기반으로 구현되며, 특정 동작이 발생했을 때 연결된 메서드들을 실행하는 역할을 합니다. 이벤트의 구성 요소이벤트 선언이벤트는 클래스 내부에서 델리게이트 타입으로 선언됩니다. 이를 통해 특정 타입의 메서드를 등록할 수 있습니다.  이벤트 구독 및 해지이벤트에 메서드를 등록하여 특정 작업이 발생했을 때 실행될 동작을 정의합니다. 구독은 += 연산자를 사용해 메서드를 추가하며, -= 연산자를 사용해 등록된 메서드를 해제할 수 있습니다. 이벤트 발생특정 조건이 충족되..

프로그래밍/C# 2024.10.12

delegate

델리게이트 (delegate)C#에서 델리게이트는 특정 메서드를 가리키고 그 메서드를 나중에 호출할 수 있는 "포인터" 같은 역할을 합니다. 델리게이트를 사용하면 메서드를 매개변수로 전달하거나, 여러 메서드를 하나의 호출 리스트로 묶어 실행할 수 있습니다.특히 이벤트와 콜백(callback)과 같은 상황에서 많이 활용됩니다. 델리게이트의 기본 개념델리게이트는 특정한 형식의 메서드를 참조할 수 있는 타입입니다. 예를 들어, 반환 타입이 void이고 인자가 없는 메서드를 참조하는 델리게이트를 정의하려면 다음과 같이 작성합니다. public delegate void MyDelegate(); 다음은 델리게이트를 선언하고 사용하는 간단한 예시입니다  델리게이트의 사용 예델리게이트는 주로 콜백 메서드를 구현하거나,..

프로그래밍/C# 2024.10.12

Interface

C# Interface에 대한 설명C#에서 interface는 클래스나 구조체가 구현해야 하는 **계약(Contract)**과 같은 개념입니다. interface는 메서드, 속성, 이벤트 등의 형식을 정의하며, 실제로 그 기능을 어떻게 구현할지는 해당 interface를 구현하는 클래스나 구조체에서 결정합니다. 기본 개념interface는 구현이 아닌 형식을 정의합니다. 즉, 메서드나 속성의 이름, 반환 타입 등을 지정하고, 실제 구현 내용은 구현하는 클래스에서 작성합니다. 또한, interface는 클래스와 달리 다중 상속이 가능합니다. 클래스는 하나의 부모 클래스만 상속할 수 있지만, 여러 interface를 동시에 구현할 수 있어 유연하게 구조를 설계할 수 있습니다. 사용 이유표준화 :다양한 클래스..

프로그래밍/C# 2024.10.10

편집 도구는 어떤걸 선택해야 하나? (Visual Studio, Visual Studio Code)

Visual Studio와 Visual Studio Code의 차이점Visual Studio(비주얼 스튜디오)와 Visual Studio Code(비주얼 스튜디오 코드)는 이름은 비슷하지만, 목적과 기능에서 큰 차이가 있습니다. 둘 다 Microsoft에서 개발한 IDE(통합 개발 환경)이지만, 각각 다른 용도로 사용됩니다.  Visual Studio (비주얼 스튜디오)IDE (Integrated Development Environment)Visual Studio는 완전한 통합 개발 환경으로, 대규모 애플리케이션 개발에 적합합니다. 주요 사용 대상C#, C++, VB.NET 등 여러 언어를 사용한 Windows 및 .NET 관련 애플리케이션 개발에 주로 사용됩니다. 주요 기능고급 디버깅과 프로파일링 기능..

var 키워드

var는 C#에서 **암시적 형식(local type inference)**을 사용할 때 쓰는 키워드입니다.변수를 선언할 때 데이터 형식을 명시적으로 작성하지 않고, 컴파일러가 오른쪽 값(할당된 값)을 보고 형식을 자동으로 추론하는 방식입니다. var number = 10;       // int로 추론됨 var name = "Alice";    // string으로 추론됨 var list = new List(); // List으로 추론됨 주요 특징강한 형식 유지var를 사용해도 변수의 형식은 명확하게 결정됩니다. 할당된 값에 따라 형식이 결정되므로, 동적(dynamic)으로 변하는 것이 아닙니다. 가독성 향상타입이 긴 경우에 var를 사용하면 코드가 더 깔끔하고 가독성이 좋아질 수 있습니다. Dicti..

프로그래밍/C# 2024.10.08

이터레이터 메서드

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