

유니티에서 개발을 하다보면 MonoBehaviour(일명 Mono)가 뭔지 생각을 하게 될텐데, Mono를 지우고 하자니.. 게임 오브젝트에 들어가지 않고, 그렇다고 공식문서에는 "스크립트"와 "게임오브젝트"를 연결 시켜주기 위한 것이라고 설명한다. 그렇다면 이 Mono가 없다면 스크립트는 돌아가지 않는가? 와 같은 대답에는 나는 "아니요"라고 이야기가 가능할 것 같다. 그렇다면 한번 왜 그런것인지 알아보도록 하자.

우선 이 개발방식에 대해 알기 위해 Mono에 대해 알아야된다. 위에 말했듯이 Mono는 스크립트와 게임오브젝트를 연결 시켜주기 위한 클래스인데, 이 클래스는 우리가 흔히 쓰는 Start, Update,...등등을 이용할 수 있게 만드는 아주 유용한 친구다. 하지만 우리가 많이 쓰는 것들은 UnityEngine에 들어있기 때문에 사용할 수 있는 것들은 많이 없지만 결국은 많이써야 된다는 점을 가지고 있다.
그렇다면 Mono라는 친구 없이 개발을 할 수있다면 믿을 수 는 없겠지만.. 사실 진짜로 가능하다. 나도 사실 이 사실을 알게된 계기가 FSM(유한 상태머신)을 제작중에 알게 된 사실이다. 그렇다면 어떻게 사용하는지 알아보자. 우선 None MonoBehaviour은 MonoBehaviour에 있는 함수들 즉 Start, Awake, Update같은 메소드들을 이용못한다는 단점이 있지만, 장점이 있다. 우선 유니티에서만 개발 할 수 있다는것에 국한되어 있지않고, 다른 테스트 코드를 이용해서 손 쉽게테스트가 가능하다는 장점이 있다. 밑은 사용하는 방법이다.
using UnityEngine;
public class TestCode{
public void TestPush(){
Debug.Log("Hello World");
}
}
public class MainClassType : MonoBehaviour{
TestCode _test;
void Start(){
_test = new TestCode();
_test.TestPush();
}
}
=> Hello World

결론은 "아니다" 굳이 안쓰고 싶다면 안써도 되지만, 만약 본인이 편하게 테스트를 하고 싶고, 게임오브젝트에다가 컴포넌트를 안넣고 사용하고 싶다면 사용하지 않아도 된다. 그렇지만 어떻게든 나중에는 사용하게 될것같으니 사용법만을 알아두도록 하자.
using UnityEngine 쓰면 의미 없는 거 아닌가요?