전체 글(16)
-
[C#] 인덱서의 사용법
인덱서란? 인덱서는 클래스나 구조체의 인스턴스를 인덱싱 할 수 있게 만들어주는 문법이다. 인덱서를 활용한 대표적인 사례로는 Dictionary나 List 등의 컬렉션들이 있다. 인덱서의 사용법 인덱스는 다음과 같은 형태로 선언된다. 접근제한자 반환형 this[매개변수] {get{} set{}} //get만 사용한 예시 public int this[int index] { get{ return index * 2; } } 인덱서가 선언된 클래스는 인스턴스를 인덱싱 할 수 있다. 또한 인덱서는 매개변수로 인덱싱이 가능하다는 점을 제외하면 프로퍼티와 동일하게 사용할 수 있다. class MyData { int[] datas = { 1, 2, 3, 4, 5 }; public int this[int a] { get ..
2023.07.26 -
[C#] const 키워드와 readonly 키워드
상수는 프로그램이 컴파일된 후 바뀌지 않는 값을 말한다. 값을 상수로 선언하면, 매직넘버등의 요소를 표현하기 쉽고, 더 빠르다는 장점이 있다. const 키워드로 컴파일 상수 선언하기 const 키워드는 위에서 설명한 컴파일 후 바뀌지 않을 값을 선언하는 데 사용된다. const float PI = 3.14f; //파이값을 상수로 선언 이렇게 선언한 상수는 정적필드처럼 사용할 수 있지만 값을 변경할 수 없다. 또한 컴파일과정에서 계산식을 단축시킬 수 있기 때문에 계산 속도가 빨라진다. readonly 키워드로 런타임 상수 선언하기 readonly 키워드는 const 키워드와 다르게 런타임 중에 값이 정해지는 상수이다. 값을 변경하려면 재컴파일을 해야 하는 const와 달리 생성자에서 값을 설정할 수 있다..
2023.07.24 -
[C#] 연산자 오버로딩 - operator 키워드
연산자 오버로딩은 클래스나 구조체가 연산자를 통해 사용될 수 있게 오버로딩하는 방법이다. operator 키워드 사용법 operator 키워드는 무조건 public static 을 통해 선언하며, 오버로드할 연산자와 형태에 따른 로직을 구현하면 연산자를 호출했을때 자신이 원하는 값을 반환할수있다. 아래는 유니티의 Vector3 구조체에 구현된 연산자 오버로드 예시이다. 이외에도 유니티의 Fake Null을 구현하는데 사용되는등 아주 유용한 키워드이다. 사용예시 유니티에서 MyData라는 데이터 저장용 클래스를 만들었다고 생각해 보자. 1이라는 정보를 저장하고 있는 두 개의 클래스를 만들고 서로 비교해 보았을 때, 내가 원한 결과는 True지만, 서로 다른 객체기 때문에 결과가 False인 것을 알 수 있..
2023.07.22 -
[UNITY] RquireComponent 어트리뷰트 - 컴포넌트 종속성 추가
유니티에서 코딩을 하다 보면 특정 컴포넌트가 다른 컴포넌트를 필요로 하는 경우가 많다. 점프기능을 가진 컴포넌트가 RigidBody를 필요로 하는 등 자주 발생하는 상황이지만 인스펙터에서 직접 필요한 모든 컴포넌트를 끼워주지 않으면 에러가 발생한다. 이런 불편함을 해결하기 위해 [RequireComponent] 어트리뷰트가 존재한다. RequireComponent 어트리뷰트는 매개변수로 System.Type을 받기 때문에 보통 typeof 키워드와 함께 쓴다. 매개변수는 3개까지 한 번에 받을 수 있으며, 이 어트리뷰트를 가진 컴포넌트는 게임오브젝트에 부착 됐을 때 매개변수로 받은 타입의 컴포넌트가 없다면 자동으로 부착시킨다. 그리고 이렇게 RequrireComponent의 매개변수로 있는 타입의 컴포넌..
2023.07.18 -
[C#] Obsolete 어트리뷰트의 사용법
C#의 Obsolete 어트리뷰트는 협업 시 폐기된 요소들을 표기하기 위한 어트리뷰트이다. 사용법 폐기된 요소 윗줄에 [Obsolete]를 작성해 사용할 수 있다. Obsolete 어트리뷰트는 메서드, 필드, 클래스등의 요소에 사용할 수 있고, [Obsolete("")] 형태로 작성해 참조 시 표시될 메시지를 직접 정할 수도 있다. 유니티에서 지원해 주는 기능 중에서도 Vector3.fwd 등 폐기된 기능이 있으니 잘 확인하고 사용하자.
2023.07.17 -
벡터의 정의와 연산(with Unity)
벡터의 정의 벡터(vector)는 수학개념으로 크기와 방향을 갖는 물리량을 의미한다. 이 글에서는 3차원 벡터를 기준으로 설명한다. 벡터의 형태 유니티에서 주로 쓰이는 Vector3(3차원 벡터)는 3개의 원소를 가진다. $$ \vec {v}=(v_x, v_y, v_z) $$ //(0,0,0)의 값을 가진 벡터를 만들어 v에 저장한다. Vector3 v = new Vector3(0,0,0); 벡터의 덧셈 $$ \vec {a}+\vec {b}=(a_x+b_x, a_y+b_y, a_z+b_z) $$ //덧셈기호를 통해 벡터를 더할 수 있다. Vector3 s = new Vector3(1,2,3) + new Vector3(5,3,7) Debug.Log(s) //(6,5,10) 벡터의 덧셈은 모든 원소를 각각 ..
2023.07.16