자, 그렇다면 오늘의 짧은 정보는... 과연 Unity는 어떤 언어로 작성되었나? 입니다. Unity가 Mono를 이용해서 .NET 프레임워크를 자체적으로 지원하고, 저희가 유니티에서 사용할 수 있는 스크립트 언어도 C# 이다보니
'유니티가 C#으로 작성 되었구나. 그럼 이 엔진이 속도가 너무 느리지 않을까?'
라는 걱정을 하는 분들이 계실겁니다. (저도 그랬다는..)
그래서 그에 대한 답을 좀 찾아보니 영문 질답란에 이미 유니티 개발자가 답을 해놨더군요.
이걸 대충 번역하면...
"유니티는 C++로 작성되었으나 다음과 같은 예외가 있습니다.
.NET API를 노출시켜서 여러분들이 C++로 게임을 짤 필요를 없게 만든 것 뿐이지요. 자바스크립트나 C# 또는 Boo를 이용해서 코딩을 할 수 있는 이유가 바로 .NET API 덕분입니다.
에디터 프로그램의 UI는 C#으로 작성했습니다. 유니티를 사용하시는 게임 개발자들에게 공개된 API와 거의 동일한 API를 쓰지요. (아직 공개되지 않는 API를 조금 쓰기도 합니다만 그리 많진 않습니다.)
이것이 바로 "UnityEngine.dll 파일을 다른 C# 프로젝트에서 사용할 수 있나요?"라는 질문에 대한 답이 언제나 "아니요"인 이유입니다. UnityEngine.dll에는 거의 아무 기능도 들어있지 않습니다. 이건 그저 C#/자바스크립트 호출들을 C++ 엔진에 연결해줄 뿐입니다. C++ 엔진이 없이는 그냥 속빈강정이랄까요?"
한마디로 대충 정리하면:
- 유니티 내부는 C++이여서 C#보단 성능이 빠릅니다. 단, C#/C++ 컨텍스트 스위치 되는 부분에서 약간의 성능저하는 있을수 있습니다만 언리얼엔진에 비해 크게 문제는 안될거 같습니다.
- 유니티 에디터는 C#으로 작성되어 있습니다. (에디터에서 리플렉션을 자동으로 지원해주는것도 이때문일듯...)
- 유니티를 사랑합니다.. (응?)
참조:
그러면 유니티는 C++/CLI로 warpping해 개발된 엔진이라고 생각하면 되는건가요?
답글삭제한 번 뒤저봐야겠네요. 요즈음 계속 끌리는 엔진이라 분석해 봐야지하고 생각만 하는 중입니다.
넵.. 전 그렇게 이해하고 있습니다.. (아니면 말고 -_-)
삭제그런 주제에 왜 c++/cli 지원은 안 해주는 걸까요 아직도... 이 글을 쓴지 10년이나 지났는데
삭제