Unity의 가장 심각한 한계는 무엇입니까? [닫은]


30

Unity vs. UDK vs. ID에 대한 이 열렬한 질문 을 읽은 후에, Unity의 반복되는 히트, 가장 치명적인 한계가 무엇인지 궁금합니다 .

이 질문을 비 주관적으로 유지하기 위해, 나는 Unity의 반복되는 최고 범죄자에 대해 다시 이야기하고 있습니다. 이것은 Unity 사용자로서 사용하기 전에 누군가가 당신에게 말한 것을 정말로 원합니다.

나는 누군가가 Unity가 버전 제어를 잘 처리하지 못한다고 들었습니다.이 바이너리 파일 (확산 불가능)이 많이 생성되기 때문입니다. 내가 혼자서 일할 때 이것은 정말 무섭지 않습니다.

생각?


1
DV이지만 의견이 없으며 2.5yo 질문입니까? 왜 그런가요?
ashes999

아마도 무작위로 넘어 질 것입니다. 이 질문은 명확하게 의견을 기반으로합니다. "이 질문을 비 주관적으로 유지하기 위해"라고 말하는 것은 가장 성가신 반복되는 최고 위반자가 다음 사용자의 최고 위반자와 동일하지 않기 때문에 주관적이지 않습니다. 이러한 목록은 모두가 "X가 말한 경우 예를 들어 신화를 시행 할 가치가없는 만 도움말을 거의 가지고 이후 아직 일류 답변은 아마와 편집되지 않은 남아 일주일에 업데이트 할 것"하지만 X는 유니티에 고정됩니다 "X입니다 심지어 몇 년 후 그들의 목록 위에 거대한 문제 ".
LearnCocos2D

게다가, 어떤 대답은으로 허용 올바른 하나? 당신이 그것에 대해 생각한다면, 대답 아무도로 인정되어서는 안 이 질문에 대답 할 권리 방법이 없기 때문에 대답. 아마도 주관적인 질문의 # 1 지표 일 것입니다.
LearnCocos2D

답변:


33

Unity 직원들이 커뮤니티가 직면 한 주요 특성을 듣고 좋은 결과를 기대할 수있게 된 것에 대해 서두를 드리겠습니다. 또한 특정 플랫폼에서만 발생하거나 개인적 선호 또는 작업중 인 게임의 특정 문제와 관련된 많은 문제가 있습니다.

그 말은 :

1) 빈약 한 소스 제어 통합 및 대규모 팀 도구. 언급했듯이, 확산 불가능한 바이너리 파일이 많이 있습니다. 편집기는 장면 파일의 읽기 전용 플래그를 무시합니다. 체크인해야하는 실제 파일은 즉시 명확하지 않습니다. 이 중 일부는 SVN 및 P4 통합으로 3.5에서 수정되고 있습니다. 텍스트 기반 장면 형식에 대한 약속도 있습니다. 업데이트 : 이제 텍스트 기반 장면 형식을 Pro의 Unity 버전에서 사용할 수 있습니다. 여기를 참조 하십시오 .

2) 느린 프로그래머 중심 UI 도구. 각 위젯은 자체 드로우 콜이며 모바일 플랫폼에서 많은 오버 헤드가 발생합니다. 애니메이션이있는 패널과 같은 개념과 UI를 직접 굴리지 않고 기분이 좋게 만드는 다른 멋진 개념은 없습니다. 로드맵에 새로운 UI 시스템이 약속되어 있습니다 (3.6?). 타사 도구가 있지만 좋지 않습니다.

3) 초보적인 입자 편집. 그러나 3.5에서 새로운 곡선 기반 시스템을 약속하고 있습니다. 업데이트 : Shuriken이라고하는이 곡선 기반 시스템을 사용할 수 있습니다. 여기를 참조 하십시오 .

4) 프리 팹을 중첩 할 수 없습니다. 사소한 문제이지만 프리 팹 시스템 및 시스템이 제공하는 모든 기능을 다룰 때 익숙하지 않으면 실망 할 수 있습니다. 이것은 약속되었지만 구체적인 날짜는 없습니다. 업데이트 : 이제 프리 팹을 중첩 할 수 있습니다.

5) 공중 상한선 아래에서 iOS 게임을하는 것은 불가능합니다. 바이너리만으로는 최상의 시나리오에서 8 메가와 같습니다. 이것은 쉽게 고칠 수있는 것이 아닙니다.

6) 널 참조 예외는 JIT 컴파일 코드를 허용하지 않는 플랫폼을 중단시킵니다. 독립형 또는 웹 버전에서는 NRE가 포착됩니다. 여전히 잡히지 않은 예외이지만 최소한 응용 프로그램은 계속 실행하려고 시도합니다. iOS에서는 기기가 충돌합니다. 디버그 모드로 전환하고 일부 유형의 예외를 포착 할 수 있지만 성능이 저하됩니다.

7) 멀티 플랫폼 게임에서 작업 할 때 빌드 대상을 전환 할 때마다 모든 것을 다시 가져와야하며 시간이 오래 걸립니다. 실제로 디스크에 프로젝트의 여러 복사본을 두어이 문제를 해결했습니다. 분명히 수입 애셋 서버가 3.5에 나옵니다.


1
@iamcreasy, DUDE. "Dropbox는 스토리지 서비스로서 기능하지만 동기화 및 공유에 중점을두고 있습니다. 개정 기록을 지원하므로 Dropbox 폴더에서 삭제 된 파일을 동기화 된 컴퓨터에서 복구 할 수 있습니다. [33] [34] Dropbox의 버전 관리도 도움이됩니다. 사용자는 현재 작업중인 파일의 기록을 알고 있으므로 한 사람 이상이 이전 양식을 잃어 버리지 않고도 파일을 편집하고 다시 게시 할 수 있습니다. [35] 버전 기록은 30 일로 제한됩니다. "Pack-Rat"이라는 무제한 버전 기록을 사용할 수 있습니다. " -Wikipedia
엔지니어

6
어쩌면 나는 불공평하지만 NullReferenceExceptions은 프로그래머 결함이라고 생각합니다. 들어오는 매개 변수를 확인해야합니다. 물론, VisualStudio에서와 같이 MonoDevelop 용 코드 분석 애드온이 있다면 더욱 쉽게 적용 할 수 있습니다.
chrish

1
@ ashes999 항상 새로운 기술로 배워야 할 용어가 있습니다. 단어는 개념에 대한 우리의 핸들입니다. 기본 플래시에서도 마찬가지입니다. Unity의 유용성에 대한 과대 광고는 아무것도 아닙니다. 비전문가 개발자의 진입 장벽을 낮추고 전문가가 훨씬 적은 비용으로 훨씬 더 많은 일을 할 수 있습니다. 예상되는 한계를 너무 걱정하지 마십시오. 그들 대부분은 당신에게 장애물이 아닐 수도 있습니다. 내가 관심을 가질 유일한 것은 null 포인터 예외이며 디버깅 할 수 있습니다.
엔지니어

3
Unity 4.1.x에서 Tedrad의 답변은 어떻게 유지됩니까? 아는 사람 있나요?
Sil

1
'이제 프리 팹을 중첩 할 수 있습니다'라고 말할 때 무엇을 말하는가? 질문이 마지막으로 편집 된 후이 기능이 제거되었을 수 있습니까? 아니면 이 addin 을 언급하고 있습니까?
NauticalMile

6

나와 친구가 더 큰 프로젝트를 위해 Unity를 회피했을 때 가장 큰 문제 중 하나는 소프트웨어 스키닝의 성능이라는 것입니다. 내가 정확하게 기억한다면 우리는 각각 약 1000 개의 verts를 가진 10 개의 애니메이션 객체를 가지고 있었고 중간 컴퓨터를 사용하는 동안 20fps를 얻었습니다 ...별로 좋지 않습니다 ...


얼마 전입니까? 거의 모든 버전이 릴리스 노트에 개선 된 스키닝 성능에 관한 내용이있는 것 같습니다. iOS에서는 FPU가 훨씬 빠르기 때문에 GPU 스키닝에서 FPU 사용으로 전환했습니다.
Tetrad

한 달 전에 ...
Cpt.

6

저의 가장 큰 문제 버전 관리였습니다. 해결책? Unity 프로젝트에 DropBox를 사용하십시오. 올바르게 설정 한 경우 (예 : "PackRat"서비스 비용 지불) 개정 이력이 유지됩니다. DropBox는 기존 버전 제어에 대해 알고 싶지 않은 디자이너와의 협업도 훨씬 쉬워 투명 솔루션을 제공합니다. 단점은 분기 / 병합이 실제로 그들이 지원하는 방식으로 지원되지 않는 것입니다. 자식, SVN.

의심하는 사람들을 위해 ...

Dropbox는 스토리지 서비스의 기능을 수행하지만 동기화 및 공유에 중점을 둡니다. 버전 기록을 지원하므로 Dropbox 폴더에서 삭제 된 파일을 동기화 된 컴퓨터에서 복구 할 수 있습니다. [33] [34] Dropbox의 버전 관리 기능은 또한 사용자가 현재 작업중인 파일의 기록을 알 수 있도록하여 한 사람 이상이 이전 양식을 잃어 버리지 않고도 파일을 편집하고 다시 게시 할 수 있도록합니다. [35] 버전 기록은 30 일로 제한됩니다. "Pack-Rat"이라는 무제한 버전 기록에 대한 유료 옵션을 사용할 수 있습니다.

Unity 포럼에서 자세한 내용을 보려면 여기 를 참조 하십시오 .

그 외에 Unity에서 성가신 것은 C 가하는 (main ()) 또는 AS3 가하는 (문서 클래스)와 같은 방식으로 응용 프로그램 진입 점이 없다는 것입니다. 그러나 빈 게임 오브젝트에 앱을 초기화하면 큰 문제가 아닙니다. 코드 흐름은이 고유 한 구조와 약간 다르지만 다시 한 번 파악하기가 쉽지 않습니다.

라이센스에 관해서는, 대부분의 사람들은 당신이 할 수있는 모든 것에 대해 할 수 있다는 것을 깨닫지 못합니다 (그리고 특히 프로 라이센스와 자산 관리자 애드온을 지불 할 돈이없는 소규모 인디 운영 및 취미를 언급하고 있습니다) 기본 / 무료 버전을 원합니다. 실제로, 그것은 큰 장벽이 아니며, Unity 팀은 매우 관대했습니다.


1
Dropbox, 예. 그러나 +1-이것은 본질적으로 내가 추구 한 것입니다.
ashes999

그는 모든 개발자가 똑같이 느낄 것이라고 생각합니다. 하지만이 일이 잘된다면 ...
엔지니어

2
우리는 Unity와 함께 Git을 사용합니다. .gitignore 파일을 설정하는 데 약간의 작업이 필요하지만 작동하며 전체 VCS 기능 세트를 제공합니다.
Kylotan

2
우리는 Unity와 함께 Mercurial (BitBucket과 함께)을 사용하며 .hgignore 파일을 올바르게 구성하면 잘 작동합니다.
JD

@JD (& Kylotan)-장면 파일을 병합 할 수없는 문제를 어떻게 해결 했습니까?
UpTheCreek

6

나는 매일 나를 귀찮게하는 또 다른 주요 제한 사항을 생각했기 때문에 이것을 별도로 게시 할 것입니다.

Unity3D에서는 MonoDevelop, 특히 배포 된 MonoDevelop의 이전 버전에서 스크립트를 편집하기를 원합니다. 이 버전의 "파일에서 찾기"기능은이 기능을 사용하면 일반적으로 IDE가 중단되어 쓸모 없게되므로 손상됩니다.

이것은 모든 엔진에 큰 자극이 될 수 있지만 다양한 게임 오브젝트에 작용하는 개별 구성 요소의 매우 분산 된 시스템을 장려하기 때문에 Unity의 경우 큰 자극입니다. 그러나 다양한 구성 요소를 검색 할 수없는 경우 어떤 구성 요소가 어떤 속성에 액세스하는지 어떻게 알 수 있습니까?

편집 :이 답변은 2011 년에 게시되었습니다 : 파일에서 찾기 버그는 얼마 전에 수정되었습니다. 주석 작성자가 말했듯이 다른 편집기에서 코드를 편집 할 수 있습니다 (디버거에서 실행하려면 선택이 제한적 임).


1
가치있는 것을 위해 Unity에서 원하는 IDE를 사용할 수 있습니다 (Visual Studio Pro를 사용합니다). 그러나 디버거를 사용하려면 MonoDevelop로 제한됩니다.
Tetrad

1
예, 디버거는 매우 중요합니다 (MonoDevelop의 것이 그렇게 크지는 않지만). 또한 불행히도 Visual Studio Express에서는 작동하지 않습니다. 사람들이 사용하는 다른 C # IDE를 모르겠습니다. 그러나 실제로 Unity와 함께 제공되는 제품은 더 나은 모양이어야합니다.
Kylotan

//wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor : 당신은 또한 숭고한 Texthttp 같은 다른 텍스트 편집기를 사용할 수 있습니다
테 런스

나는 그것을 시도하지는 않았지만 디버깅을 위해 Visual Studio를 사용할 수있는 방법이 있다는 것을 읽었습니다 (플러그인을 통해). 이것은 Pro 버전에만 해당 될지 모르지만 확실하지 않습니다.
Christian

이제 UnityVS를 통해 Visual Studio 통합이 훨씬 원활 해졌습니다. 디버깅, 스텝 오버 등
Basic

5

나에게 가장 심각한 제한은 EULA입니다.

"도박 제한 제한 사항 Unity와의 별도 라이센스없이 도박 행위와 관련하여 라이센스 사용자 컨텐츠를 배포하거나 게시 할 수 없습니다."

즉, v4.0부터는 사용자 또는 고객이 사례별로 협상되는 추가 라이센스 비용을 지불 할 준비가되어 있지 않으면 현금 / 기회 관련 게임에 Unity를 사용할 수 없습니다. 즉, 그들은 당신이 얼마나 가치가 있는지보고 그에 따라 세금을 내고 6 숫자가 인용됩니다.

더 혼란스러운 것은 누가 v5 EULA에 추가 할 것인지 아는 것입니다. 아마도 모든 소셜 게임입니까? 아마도 모든 멀티 플레이어 게임입니까?

Unity를 사용하는 모든 개발자는 향후 릴리스에서 몸값을받을 위험이 있습니다.


4
타사 도구 나 소프트웨어는 새 버전에서 EULA 조항을 추가하거나 제거 할 수 있습니다. 나는 그것이 그것이 Unity에만 어떤 영향을 미치는지 실제로 보지 못합니다. 또한, 증거를지지하지 않으면 도박 금지 조항이 일반적으로 소프트웨어의 가장 치명적인 한계가 될 정도로 심각하다고 주장하는 것이 이상하게 보입니다. 이것은 원래 (지금은 주제가 아닌) 원래의 질문에서 얻은 것입니다. 대부분의 Unity 게임이 도박을 핵심 기능으로 사용하지 않는 한,이 답변은 맹렬한 느낌입니다.
Josh

4

좋은 질문. 저에게 가장 큰 문제는 GUI입니다. 프로그래머 중심적이라는 것은 신경 쓰지 않지만 GUI 객체가 객체가 아닌 함수이며, GUI 처리는 모두 렌더링 및 이벤트 처리에 사용되는 하나의 함수 호출에 채워지는 끔찍한 방법을 생각합니다. 입력 시스템과의 통합이 없습니다 (GUI 요소에 대한 클릭은 세계에서 클릭으로 해석 될 수 있음을 의미합니다).

두 번째 문제는 적절한 버전 제어 지원이 부족하다는 것입니다 (주로 시스템은 디렉토리 레이아웃을 프로젝트 레이아웃으로 사용하므로 항목을 이동하거나 이름을 바꿀 때 VCS를 혼동시킵니다). 그러나이 문제는 해결 될 수 있으며 문제가되지 않습니다. 각자 모두.


GUI 시스템에 쿼리하여 클릭이 소비되었는지 확인한 다음 월드 오브젝트 선택 코드에서 클릭을 무시할 수 있습니다. 번거롭지 만 작동합니다.
Sean Middleditch 2016 년

어떻게 하시겠습니까?
Kylotan

입력 시스템 객체에는 "핫"요소의 id를 얻는 속성이 있습니다. 커서 아래에 GUI 요소가 없으면 0이됩니다. 정확한 속성 이름을 잊어 버리십시오. 그러나 유니티 스크립팅 참조에 있어야합니다.
Sean Middleditch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.