MonoBehaviour
유니티에서 새로운 c# Class를 생성하면, MonoBehaviour를 상속 받고 있다. MonoBehaviour가 무엇이기에 상속 받을까?MonoBehaviour란?유니티에 모든 Component Class들의 기반이다.Component Class들은 게임을 만들기
fore4022.tistory.com
MonoBehaviour에 대해서 모른다면, 위의 글을 먼저 읽어보길 바란다.
Non-MonoBehaviour는 말 그대로 MonoBehaviour를 상속 받지 않은 Class이다. 그러면, GameObject에 추가할 수 없는데 어떻게 그리고 왜 사용하는가?
public class Example
{
}
장점
- GameObject에 추가 없이 사용 가능하다.
- 정적(Static) Class는 어떤 Class에서도 접근 가능하다.
- 동적으로 사용 가능하다.
- Component의 역할을 가지지 않기 떄문에, 독립적이고 다양한 동작을 구현할 수 있다.
- 메모리 사용을 절약할 수 있다.
public static class Example
{
public static int Method1(int i, int j)
{
return i + j;
}
}
public class ExampleData
{
public int a = 0;
public int b;
private int c = 0;
public int GetC { get{ return c;} }
}
using UnityEngine;
public class Test : MonoBehaviour
{
private ExampleData exampleData;
private void Start()
{
int value = Example.Method(1, 2);
exampleData = new();
Debug.Log(value);
Debug.Log(exampleData.a);
Debug.Log(exampleData.GetC);
}
}//실행 결과 : 3, 0, 0이 출력되는 것을 확인할 수 있다.
Non-MonoBehaviour Class의 사용
- Component로의 역할을 가지는 것보다, 단순한 메서드나 데이터에 사용된다.
- 정적(Static) 메서드들을 모아 놓은 Class에 사용된다.
MonoBehaviour Class와 차이점
- 유니티에서 제공되는 함수를 사용할 수 없다.
- GameObject에 추가할 수 없다.
- New() 키워드로 Instance를 생성할 수 있다.
상속과의 차이점
- Class간의 연결 없이 사용 가능하다.
- 제약 조건 없이 생성된 instance를 통해서 사용 가능하다.
주의할 점
- 정적(Static)이 아닌 Non-MonoBehaviour Class는 instance 생성 없이는 접근할 수 없다.
- 사용하기 위해서 꼭 instance를 생성해 주어야 한다.
'유니티 > 개념 정리' 카테고리의 다른 글
| ObjectPool (0) | 2024.10.23 |
|---|---|
| 실행 결과 보장 (0) | 2024.10.21 |
| GetComponentsInChildren (0) | 2024.10.11 |
| MonoBehaviour (0) | 2024.10.10 |
| UI 사이의 Event 전달 (0) | 2024.10.07 |