[DOTS] 시작하기 전 문법 목습

황교선·2023년 8월 9일
0

DOTS

목록 보기
1/5

DOTS 개념과 샘플 강좌 영상을 보기에 앞서, 강좌에 들어가는 여러 생소한 개념을 적어놓고 시작합니다. 해당 내용들은 강좌를 들으면서 그때그때 나온 내용들을 간단히 적어둔 것입니다.

개체 이니셜라이저

명시적으로 생성자를 호출한 다음 할당문 줄을 추가하지 않고도 생성 시 개체의 모든 액세스 가능한 필드나 속성에 값을 할당할 수 있습니다. 개체 이니셜라이저 구문을 사용하면 생성자의 인수를 지정하거나 인수(및 괄호 구문)를 생략할 수 있습니다.

public class Cat
{
    // Auto-implemented properties.
    public int Age { get; set; }
    public string? Name { get; set; }

    public Cat()
    {
    }

    public Cat(string name)
    {
        this.Name = name;
    }
}

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Cat sameCat = new Cat("Fluffy"){ Age = 10 };

Tuple in foreach

아래 코드에서 foreach의 지역 변수로 활용하는 변수 공간에는 튜플도 활용할 수 있음

foreach (var (transform, speed) in
                     SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>())
{
    transform.ValueRW = transform.ValueRO.RotateY(
        speed.ValueRO.RadiansPerSecond * deltaTime);
}

readonly

읽기만 가능하다.

Partial Class

클래스 내용이 길어질 경우 여러 파일에 나눠서 구현할 수 있게 해준다.

Nested Class

중첩 클래스, 내부 클래스 등으로 불리며 사용 이유는 다음과 같다.

  • 클래스 외부에 공개하고 싶지 않은 형식을 만들고자할 때
  • 현재 클래스의 일부분처럼 표현할 수 있는 클래스를 만들고자 할 때

Attribute

코드에 대한 부가 정보를 기록하고 읽을 수 있는 기능입니다. 애트리뷰트를 이용해서 클래스나 구조체, 메소드, 프로퍼티 등에 데이터를 기록해두면 C# 컴파일러나 C#으로 작성된 프로그램이 이 정보를 읽고 사용할 수 있습니다.

[BurstCompile] Attribute

This attribute can be used to tag jobs as being Burst Compiled, and optionally set some compilation parameters.

ref 키워드

  1. 메서드가 호출자에게 참조로 반환하는 값입니다. 즉, 호출자는 메서드에서 반환된 값을 수정할 수 있으며 해당 변경 내용은 호출된 메서드의 개체 상태에 반영됩니다.

    사용 예

    void Execute(ref LocalTransform transform, in RotationSpeed speed)
    {
        transform = transform.RotateY(speed.RadiansPerSecond * deltaTime);
    }
  2. 지역 변수를 선언하고 변수의 형식 앞에 키워드(keyword) 추가 ref 하면 참조 변수 또는 로컬을 ref 선언합니다.

    참조 변수는 참조 변수라고 하는 다른 변수를 참조하는 변수입니다. 즉, 참조 변수는 참조에 대한 별칭 입니다. 참조 변수에 값을 할당하면 해당 값이 참조에 할당됩니다. 참조 변수의 값을 읽으면 참조 값이 반환됩니다. 다음 예제에서는 해당 동작을 보여줍니다.

    사용 예

    ref int alias = ref variable;

in 키워드

인수가 참조로 전달되지만 인수가 수정되지 않습니다.

사용 예

void Execute(ref LocalTransform transform, in RotationSpeed speed)
{
    transform = transform.RotateY(speed.RadiansPerSecond * deltaTime);
}

out 키워드

참조를 통해 인수를 전달할 수 있습니다. 인수로 전달되는 변수는 메서드 호출에서 전달되기 전에 초기화할 필요가 없지만 호출된 메서드는 메서드가 반환되기 전에 값을 할당해야 합니다.

profile
성장과 성공, 그 사이 어딘가

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

많은 도움이 되었습니다, 감사합니다.

답글 달기