Uinty3D의 주요 "프로"는 그것이 빠르다는 것입니다. 나는 여기서 성능이 아니라 개발 속도에 대해 이야기하고 있습니다. 당신은 :
- 통합 자산 파이프 라인. 리소스 하위 시스템에 시간을 소비 할 필요가없고, 쓰기 및 수정을위한 버그가있는 가져 오기 루틴이 없습니다. 파일을 폴더에 놓기 만하면 작동합니다.
- 통합 레벨 편집기. 레벨 툴에 시간을 소비 할 필요가 없습니다. 바로 비즈니스에 집중하십시오.
- 훌륭한 조정 및 디버깅 지원 : 모든 게임 플레이 변수는 재생하는 즉시 표시되며 즉시 변경할 수 있습니다.이 모든 것은 한 줄의 코드를 작성하지 않고도 가능합니다. 언제든지 게임을 일시 중지하거나 한 번에 한 문장 씩 코드를 단계별로 실행하십시오.
- 기성품 구성 요소의 포괄적 인 라이브러리. 렌더링, 사운드, 물리, 컨트롤-많은 "boilerplate"코드가 이미 작성되었습니다.
- 스크립트 호스트로서의 모노. 언어로서 C #의 장점에 대해 논쟁 할 수는 있지만 Mono의 기본 클래스 라이브러리는 다양한 기능을 제공합니다. 컬렉션, I / O, 멀티 스레딩 및 미묘하게 표현적인 LINQ는 모두 개발 속도를 상당히 높여줍니다.
또한 Unity3d는 여러 플랫폼에서 정말 좋습니다. 물론 Windows .exe 게임을 만든 다음 iPhone에서 마술처럼 "작동"할 수는 없습니다. 그러나 유니티는 그와 매우 가까워집니다. 필요한 것은 "포팅"이상의 "트위 킹"입니다.
물론 어떤 경우에는 Unity3D가 이상적이지 않습니다. 일부 LAN 피어 투 피어 재생에는 Unity에 통합 된 네트워크 멀티 플레이어가 적합하지만 중앙 서버가 필요한 것은 거의 모든 네트워크 코드를 처음부터 작성해야합니다. 유니티의 GUI 시스템은 매우 기발하고 느리기 때문에 게임 내에서 복잡한 GUI를 만드는 것은 쉽지 않습니다. 그러나 내가 본 다른 모든 게임 GUI 시스템도 고통스럽기 때문에 Unity의 시스템은 전반적으로 그렇게 나쁘지 않습니다.
물론 Unity3D는 라이브러리 / 소스 코드 만 제공하는 OGRE와 같은 "게임 엔진"보다 유연성이 떨어집니다. 그 성능은 정확히 최고가 아니며 스크립팅 샌드 박스 만 있기 때문에 영리한 저수준 핵을 사용하여 개선 할 수는 없습니다. 예를 들어 Unity의 빌트인 트리 렌더러가 어떤 이유로 든 만족하지 못하면 직접 작성할 수 없습니다 (글쎄, 가능하지만 스크립트를 통해 작동하고 아마도 너무 느리고 번거로울 것입니다) ). 그럼에도 불구하고 약간의 성능 저하를 염려하지 않는 한 Unity로 무엇이든 할 수 있습니다.
그러나 Unity3D의 가장 큰 "콘"은 소스 제어입니다. 이미 언급했듯이 Unity의 자체 애셋 서버 비용은 꽤 비쌉니다. 정말 힘들어요. 심지어 분기가 없습니다. Unity3D는 이론적으로 타사 SCM 시스템을 지원하지만,이를 사용하는 것도 위험합니다. SVN 커밋 후 가져 오기 설정이 "마 법적으로"변경되거나 Perforce를 사용한 후 모든 객체의 매개 변수가 사라졌습니다. 이 모든 것을 해결할 수는 있지만 어쨌든 Unity3D + 소스 제어 = 고통입니다.
따라서 실제로 귀하의 질문에 대답하십시오. 나는 Unity3D는 최고 중 하나, 그렇지 않으면이라고 생각 가장하는 "작은"게임에 대한 게임 엔진의 선택. 특히 프로토 타입 단계에서.
즉, 우리가 교육 프로젝트에 대해 이야기하고 있다면 반대하는 것이 좋습니다. 게임의 작동 방식을 배우려면 가능한 한 낮은 수준에서 게임을 작성하는 것이 좋습니다. 게임 엔진은 훌륭한 도구입니다. 그러나 최대 이익을 위해 그것을 사용하려면 그들이 어떻게 작동 하는지 , 왜 그렇게 작동 하는지 이해해야합니다 . 그리고 이것을 배우는 가장 좋은 방법은 결국 자신의 게임 엔진을 작성하는 것입니다.