본문 바로가기
[ Unity ]/- 유니티 실습

유니티 제네릭(Generic)

by MRG 2024. 9. 7.
728x90
반응형

 

▣ <>는 C#에서 제네릭(Generic)을 사용할 때 나타나는 구문입니다.

제네릭은 클래스나 메서드, 구조체 등을 정의할 때 데이터 타입을 일반화해서 사용할 수 있도록 하는 기능입니다.

제네릭을 사용하면 코드의 재사용성을 높일 수 있고, 타입 안정성을 유지할 수 있습니다.

▣ C#에서 메서드나 클래스 이름 뒤에 <>를 붙이고, 그 안에 타입을 지정하는 방식으로 제네릭을 활용합니다. 

Unity에서 자주 쓰이는 GetComponent<T>()에서 <> 안에 들어가는 T가 바로 타입 매개변수입니다. 제네릭은 다양한 타입을 지원하기 때문에, 유연하게 여러 타입을 처리할 수 있습니다.

▣ 제네릭의 기본 개념
<> 안에 들어가는 것은 타입 매개변수로, 특정 타입을 의미합니다.
제네릭을 사용하면 다양한 타입에 대해 동일한 로직을 처리할 수 있습니다.
컴파일러는 제네릭을 통해 타입을 미리 확인하므로, 타입 안정성을 보장하고, 유형 오류를 방지할 수 있습니다.

 

https://docs.unity3d.com/2019.3/Documentation/Manual/GenericFunctions.html

 

Unity - Manual: Generic Functions

Stable scripting runtime: known limitations Generic Functions The Unity Scripting API Reference documentation lists some functions (for example, the various GetComponent functions) with a variant that has a letter T or a type name in angle brackets after t

docs.unity3d.com

 

 

 

▣ 코드 설명
GenericClass<T>: T는 타입 매개변수로, 클래스의 내부에서 어떤 타입이든 사용할 수 있게 합니다. 

이 예제에서는 int와 string 타입을 사용한 예시를 보여주고 있습니다.

생성자: T 타입의 값을 받는 생성자로, 입력받은 아이템을 저장합니다.

메서드: GetItem() 메서드는 제네릭 타입 T에 맞는 값을 반환합니다.

사용 예시: GenericClass<int>는 int 타입을 사용하고, GenericClass<string>은 string 타입을 사용하는 예시입니다. 제네릭 덕분에 동일한 로직으로 여러 타입을 처리할 수 있습니다.

 

▣ Unity에서의 활용: GetComponent<T>()
Unity의 GetComponent<T>()도 제네릭을 활용하는 대표적인 예시입니다. <T>는 가져올 컴포넌트의 타입을 나타냅니다. 예를 들어, Rigidbody, Collider, MeshRenderer와 같은 컴포넌트를 가져올 때 제네릭을 사용하여 원하는 타입을 명시합니다.

 

 

▣ GetComponent는 Unity에서 가장 자주 사용되는 함수 중 하나로, 게임 오브젝트(GameObject)에 추가된 컴포넌트(Component)를 가져오는 데 사용됩니다. Unity의 게임 오브젝트는 여러 컴포넌트의 집합으로 구성되기 때문에, 이를 통해 오브젝트에 추가된 스크립트나 물리, 렌더링 등의 다양한 기능을 제어할 수 있습니다.

▣ GetComponent 사용 구조
컴포넌트형 변수 = gameObject.GetComponent<컴포넌트형>();
gameObject: 이 함수가 호출된 게임 오브젝트. 현재 스크립트가 추가된 오브젝트 또는 다른 오브젝트를 참조할 수 있습니다.
<컴포넌트형>: 가져오려는 컴포넌트의 타입(예: Rigidbody, Collider, MeshRenderer 등).
컴포넌트형 변수: GetComponent로 가져온 컴포넌트를 저장하는 변수입니다. 이 변수를 통해 해당 컴포넌트를 제어하거나 속성에 접근할 수 있습니다.

728x90
반응형

'[ Unity ] > - 유니티 실습' 카테고리의 다른 글

유니티 싱글톤  (4) 2024.09.08
유니티 3D ParticleSystem  (0) 2024.09.08
유니티 SoundManager  (4) 2024.09.06
유니티 2D AI 스폰  (0) 2024.09.05
유니티 2D AI 추적시스템  (0) 2024.09.05

댓글