본문 바로가기
유니티/개념 정리

Non-MonoBehaviour

by fore4022 2024. 10. 14.

MonoBehaviour

 

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