ข้อ จำกัด ที่ร้ายแรงที่สุดของ 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) การรวมแหล่งการควบคุมที่ไม่ดีและเครื่องมือของทีมขนาดใหญ่ ดังที่คุณกล่าวถึงไฟล์ไบนารีที่ไม่สามารถกระจายได้จำนวนมาก เอดิเตอร์ละเว้นแฟล็ก read only สำหรับไฟล์ฉาก ไฟล์จริงที่คุณต้องเช็คอินไม่ชัดเจนทันที บางส่วนกำลังถูกแก้ไขใน 3.5 ด้วยการรวม SVN และ P4 นอกจากนี้ยังมีสัญญาของรูปแบบฉากตามข้อความ UPDATE: รูปแบบข้อความตามฉากนั้นมีให้บริการในรุ่น Pro ของ Unity แล้ว ดูที่นี่

2) เครื่องมือ UI ที่ช้าเป็นโปรแกรมเมอร์ วิดเจ็ตแต่ละรายการเป็นสายเรียกเข้าของตัวเองซึ่งมีค่าใช้จ่ายจำนวนมากบนแพลตฟอร์มมือถือ ไม่มีแนวคิดของสิ่งต่าง ๆ เช่นพาเนลที่มีภาพเคลื่อนไหวและทุกสิ่งที่น่าสนใจอื่น ๆ ที่ทำให้ UI รู้สึกดีโดยไม่ต้องกลิ้งตัวเอง มีสัญญาของระบบ UI ใหม่บนแผนงาน (3.6?) มีเครื่องมือของบุคคลที่สามอยู่บ้าง แต่ก็ไม่ได้ยอดเยี่ยม

3) การแก้ไขอนุภาคพื้นฐานจริงๆ พวกเขากำลังสัญญากับระบบเส้นโค้งแบบใหม่ใน 3.5 UPDATE: ระบบเส้นโค้งนี้เรียกว่า Shuriken พร้อมให้บริการแล้ว ดูที่นี่

4) คุณไม่สามารถซ้อน prefab ได้ ปัญหาเล็ก ๆ แต่เมื่อคุณคุ้นเคยกับการทำงานกับระบบรูปแบบสำเร็จรูปและพลังทั้งหมดที่มีให้คุณก็สามารถทำให้หงุดหงิด สิ่งนี้ได้ถูกสัญญาไว้ แต่ไม่มีวันที่ระบุ ปรับปรุง: ตอนนี้คุณสามารถซ้อนสำเร็จรูปได้

5) ถัดจากสิ่งที่เป็นไปไม่ได้ที่จะได้รับเกม iOS ต่ำกว่าขีด จำกัด อากาศ ไบนารีเพียงอย่างเดียวนั้นมีขนาด 8 เมกกะบิตในสถานการณ์กรณีที่ดีที่สุด นี่ไม่ใช่สิ่งที่สามารถแก้ไขได้ง่าย

6) ข้อผิดพลาดในการอ้างอิงที่ไม่มีข้อผิดพลาดของแพลตฟอร์มที่ไม่อนุญาตให้คอมไพล์โค้ด JIT สำหรับเวอร์ชันสแตนด์อโลนหรือบนเว็บ NREs จะถูกตรวจจับ มันยังคงเป็นข้อยกเว้นที่ไม่ได้ตรวจสอบ แต่อย่างน้อยแอปพลิเคชันจะพยายามทำงานต่อไป บน iOS มันทำให้อุปกรณ์ขัดข้อง คุณสามารถวางไว้ในโหมดดีบักและตรวจจับข้อยกเว้นบางประเภท แต่ประสิทธิภาพลดลง

7) เมื่อทำงานกับเกมแบบหลายแพลตฟอร์มทุกครั้งที่คุณเปลี่ยนเป้าหมายการสร้างคุณต้องนำเข้าใหม่ทุกอย่างและใช้เวลานาน ฉันได้แก้ไขสิ่งนี้โดยเพียงแค่มีหลายสำเนาของโครงการในดิสก์ เห็นได้ชัดว่ามีเซิร์ฟเวอร์สินทรัพย์ที่นำเข้ามาใน 3.5


1
@iamcreasy, เหมาะกับตัวเอง, DUDE "ขณะที่ Dropbox ทำหน้าที่เป็นบริการจัดเก็บข้อมูลโฟกัสของมันคือการซิงโครไนซ์และแบ่งปันซึ่งรองรับประวัติการแก้ไขดังนั้นไฟล์ที่ถูกลบจากโฟลเดอร์ Dropbox อาจถูกกู้คืนจากคอมพิวเตอร์ที่ซิงค์ใด ๆ ก็ได้ [33] [34] การควบคุมเวอร์ชันของ Dropbox ผู้ใช้รู้ประวัติของไฟล์ที่พวกเขาอาจกำลังทำงานอยู่ทำให้ผู้ใช้มากกว่าหนึ่งคนสามารถแก้ไขและโพสต์ไฟล์ใหม่โดยไม่มีความยุ่งยากในการสูญเสียรูปแบบก่อนหน้านี้ [35] ประวัติรุ่น จำกัด อยู่ที่ 30 วันตัวเลือกที่ชำระเงินสำหรับ ประวัติรุ่นไม่ จำกัด ที่เรียกว่า "Pack-Rat" พร้อมให้บริการ " -Wikipedia
วิศวกร

6
บางทีฉันอาจไม่ยุติธรรม แต่ฉันคิดว่า NullReferenceExceptions เป็นความผิดของโปรแกรมเมอร์ คุณควรตรวจสอบพารามิเตอร์ขาเข้าของคุณ แน่นอนว่าต้องการจะง่ายต่อการบังคับใช้ถ้าเรามีการเรียงลำดับของการวิเคราะห์รหัสบาง Add-on สำหรับ MonoDevelop เหมือนที่คุณได้รับใน VisualStudio ...
chrish

1
@ ashes999 มีคำศัพท์บางคำที่คุณต้องเรียนรู้ด้วยเทคโนโลยีใหม่อยู่เสมอ คำที่เราจัดการกับแนวคิด เช่นเดียวกันแม้กระทั่งกับแฟลชพื้นฐาน hype รอบ ๆ การใช้งานของ Unity นั้นไม่ได้มีไว้เพื่ออะไร มันลดอุปสรรคในการเข้าสู่นักพัฒนาที่ไม่ใช่มืออาชีพและช่วยให้มืออาชีพทำไกลได้ไกลยิ่งน้อย ไม่ต้องกังวลมากเกินไปกับข้อ จำกัด ที่ควรทำ โอกาสที่พวกเขาส่วนใหญ่อาจไม่เป็นอุปสรรคสำหรับคุณ สิ่งเดียวที่ฉันจะเกี่ยวข้องกับเป็นข้อยกเว้นตัวชี้โมฆะและที่ debuggable
วิศวกร

3
คำตอบของ Tedrad ค้างไว้ใน Unity 4.1.x อย่างไร มีใครรู้บ้าง
Sil

1
เมื่อคุณพูดว่า 'คุณสามารถทำรังรูปสำเร็จรูป' คุณหมายถึงอะไร บางทีฟังก์ชั่นนี้อาจถูกลบตั้งแต่คำถามถูกแก้ไขครั้งล่าสุด หรือคุณหมายถึงaddin นี้ ?
NauticalMile

6

เมื่อฉันและเพื่อนประเมินความสามัคคีสำหรับโครงการขนาดใหญ่เราพบว่าหนึ่งในปัญหาที่ใหญ่กว่าคือประสิทธิภาพการทำงานด้วยซอฟต์แวร์ที่น่าสนใจ ถ้าฉันจำได้อย่างถูกต้องเรามีบางสิ่งบางอย่างเช่น 10 อนิเมชั่นเคลื่อนไหวด้วย 1,000 verts แต่ละอันและฉันได้ 20fps ในขณะที่ใช้คอมพิวเตอร์ midend ... ไม่ค่อยดี ...


นานแค่ไหนแล้วที่นี่ ดูเหมือนว่าเกือบทุกรุ่นจะมีบางอย่างในรีลีสโน้ตเกี่ยวกับการปรับปรุงประสิทธิภาพการสกินนิ่ง ในหน้า iOS พวกเขาเปลี่ยนจากการทำ GPU ที่น่าสนใจไปใช้ FPU เพราะมันเร็วกว่ามาก
Tetrad

เมื่อหนึ่งเดือนก่อน ...
Cpt

6

ปัญหาอันดับหนึ่งของฉันคือการควบคุมเวอร์ชัน การแก้ไขปัญหา? เพียงใช้ DropBox สำหรับโครงการ Unity หากคุณตั้งค่าไว้อย่างถูกต้อง (เช่นชำระค่าบริการ "PackRat") จะเก็บประวัติการแก้ไข นอกจากนี้ยังง่ายกว่ามากที่จะทำงานร่วมกับนักออกแบบด้วยวิธีนี้ผู้ที่ไม่ต้องการรู้เกี่ยวกับการควบคุมเวอร์ชันดั้งเดิม DropBox มอบโซลูชันที่โปร่งใสให้พวกเขา ข้อเสียคือการแยก / รวมกันไม่ได้รับการสนับสนุนในลักษณะที่เป็นเช่น git, SVN

สำหรับผู้ที่สงสัย ...

ในขณะที่ Dropbox ทำหน้าที่เป็นบริการจัดเก็บข้อมูลโฟกัสของมันคือการซิงโครไนซ์และแบ่งปัน รองรับประวัติการแก้ไขดังนั้นไฟล์ที่ถูกลบจากโฟลเดอร์ Dropbox อาจถูกกู้คืนจากคอมพิวเตอร์ที่ซิงค์เครื่องใดก็ได้ [33] [34] การควบคุมเวอร์ชันของ Dropbox ยังช่วยให้ผู้ใช้ทราบประวัติของไฟล์ที่พวกเขากำลังทำงานอยู่ทำให้ผู้ใช้มากกว่าหนึ่งคนสามารถแก้ไขและโพสต์ไฟล์อีกครั้งโดยไม่มีความยุ่งยากในการสูญเสียแบบฟอร์มก่อนหน้านี้ [35] ประวัติรุ่น จำกัด อยู่ที่ 30 วัน ตัวเลือกการชำระเงินสำหรับประวัติรุ่นไม่ จำกัด ที่เรียกว่า "Pack-Rat" มีให้บริการ

ดูที่นี่สำหรับการอ้างอิงที่มั่นคงจากฟอรัม Unity

นอกเหนือจากนั้นสิ่งเดียวที่ฉันพบว่าน่ารำคาญเกี่ยวกับ Unity คือมันไม่มีจุดเข้าใช้งานในลักษณะที่ C ทำ (main ()) หรือ AS3 ทำ (class document) แต่คุณเพิ่งวางแอพไว้ใน GameObject ที่ว่างเปล่าไม่ใช่เรื่องใหญ่ การไหลของรหัสแตกต่างกันเล็กน้อยรอบ ๆ โครงสร้างที่มีอยู่นี้เช่นกัน แต่อีกครั้งไม่มีอะไรยากเกินกว่าจะจับได้

สำหรับใบอนุญาตนั้นคนส่วนใหญ่ไม่ได้ตระหนักถึง (และฉันหมายถึงการดำเนินงานอินดี้ขนาดเล็กและมือสมัครเล่นที่อาจไม่มีเงินที่จะจ่ายสำหรับใบอนุญาตมืออาชีพและผู้จัดการสินทรัพย์เพิ่มเติม) ที่คุณสามารถทำทุกสิ่งที่คุณทำได้ เคยต้องการกับรุ่นพื้นฐาน / ฟรี จริงๆมันไม่ได้เป็นอุปสรรคใหญ่ทีม Unity ได้ใจกว้างมาก


1
ดรอปบ็อกซ์ใช่ไหม แต่ +1 - นี่คือสิ่งที่ฉันเป็นหลังจากนั้น
ashes999

ฉันคิดว่านักพัฒนาคนใดจะรู้สึกเหมือนเดิม แต่เดี๋ยวก่อนถ้ามันทำงาน ...
วิศวกร

2
เราใช้ Git ด้วยความสามัคคี ใช้เวลาเล็กน้อยในการตั้งค่าไฟล์. gignignore แต่ใช้งานได้และให้คุณสมบัติชุด VCS แบบเต็ม
Kylotan

2
เราใช้ Mercurial (พร้อม BitBucket) กับ Unity และใช้งานได้ดีเมื่อคุณกำหนดค่าไฟล์. hgignore อย่างถูกต้อง
JD

@JD (& Kylotan) - คุณมีปัญหากับไฟล์ฉากที่ไม่สามารถผสานได้อย่างไร
UpTheCreek

6

ฉันคิดถึงข้อ จำกัด ที่สำคัญอื่นที่ทำให้ฉันรำคาญทุกวันดังนั้นฉันจะโพสต์สิ่งนี้แยกจากกัน

Unity3D ต้องการให้คุณแก้ไขสคริปต์ของคุณใน MonoDevelop โดยเฉพาะ MonoDevelop รุ่นเก่าที่พวกเขาแจกจ่าย ฟังก์ชัน "ค้นหาในไฟล์" ของรุ่นนี้ใช้งานไม่ได้ซึ่งโดยทั่วไปแล้วการใช้งานจะทำให้ IDE หยุดทำงานทำให้ไม่สามารถใช้งานได้

นี่จะเป็นการระคายเคืองครั้งใหญ่กับเครื่องยนต์ใด ๆ แต่มันก็เป็นความรำคาญอย่างมากกับ Unity เพราะมันส่งเสริมระบบการกระจายของส่วนประกอบที่แยกจากกันซึ่งทำหน้าที่เกี่ยวกับวัตถุเกมต่างๆ แต่คุณจะรู้ได้อย่างไรว่าส่วนประกอบใดเข้าถึงคุณสมบัติใดถ้าคุณไม่สามารถค้นหาข้ามส่วนประกอบต่าง ๆ ได้

แก้ไข: คำตอบนี้ถูกโพสต์ในปี 2011: ข้อผิดพลาดการค้นหาในไฟล์ได้รับการแก้ไขบางเวลาที่ผ่านมาขอบคุณ และตามที่ผู้วิจารณ์กล่าวว่าคุณสามารถแก้ไขรหัสของคุณในโปรแกรมแก้ไขอื่น ๆ (แม้ว่าตัวเลือกของคุณจะถูก จำกัด หากคุณต้องการให้สามารถทำงานในดีบักเกอร์ได้)


1
สำหรับสิ่งที่คุ้มค่าคุณสามารถใช้ IDE ใด ๆ ที่คุณต้องการกับ Unity (ฉันใช้ Visual Studio Pro) แต่ถ้าคุณต้องการใช้ดีบักเกอร์คุณจะถูก จำกัด เฉพาะ MonoDevelop
Tetrad

1
ใช่โปรแกรมดีบั๊กค่อนข้างสำคัญ (แม้ว่า MonoDevelop จะไม่ค่อยดีเท่าไหร่) นอกจากนี้มันบอกว่าใช้งานไม่ได้กับ Visual Studio Express ฉันไม่รู้ C # IDE อื่น ๆ ที่ผู้คนใช้ แต่จริงๆแล้วเรือที่มี Unity ควรจะอยู่ในสภาพดีกว่า
Kylotan

คุณยังสามารถใช้โปรแกรมแก้ไขข้อความอื่น ๆ เช่น Sublime Texthttp: //wiki.unity3d.com/index.php/Using_Sublime_Text_as_a_script_editor
Terrance

ฉันไม่ได้ลอง แต่ฉันได้อ่านแล้วว่าตอนนี้มีวิธีใช้ Visual Studio สำหรับการแก้ไขข้อบกพร่อง (ฉันคิดว่าผ่านปลั๊กอิน) อาจเป็นไปได้ว่านี่เป็นเพียงสำหรับรุ่น Pro แต่ฉันไม่แน่ใจ
Christian

FWIW, UnityVS ทำให้การรวม Visual Studio ราบรื่นยิ่งขึ้น คุณสามารถตรวจแก้จุดบกพร่องก้าวข้าม ฯลฯ
พื้นฐาน

5

สำหรับฉันข้อ จำกัด ที่ร้ายแรงที่สุดอยู่ใน EULA:

"Gambling Restrictions You may not distribute or publish any Licensee Content in connection with any Gambling Activities without a separate license from Unity."

This means that since v4.0, you cannot use Unity for games involving cash / chance, unless you or your clients are prepared to pay an additional license fee which is negotiated on a case by case basis. I.e. they see how much you are worth and tax you accordingly, with 6 figures being quoted.

More disturbing is that who knows what they will add to v5 EULA. Perhaps all social games? Perhaps all multi-player games?

Any developer using Unity is at risk of being held to ransom in a future release.


4
Any third-party tools or software could add (or remove) EULA clauses in new versions. I don't really see how that is specific to Unity. Further, without supporting evidence it seems weird to claim that the no-gambling clause is serious enough to be the most damning limitation of the software in general, which is what the original (admittedly now off-topic) question was trying to get at. Unless the majority of Unity games were made relying on gambling as a core feature, this answer reads more like a rant.
Josh

4

Good question. For me, the biggest problem is the GUI. I don't mind it being programmer-centric, but I do mind the awful way in which GUI objects are functions rather than an object, and that GUI handling is all stuffed into one function call which is used for rendering and for event handling, and that there's no integration with the input system (meaning clicks on GUI elements can be interpreted as clicks in the world), etc.

A secondary problem is the lack of adequate version control support (mostly because the system uses the directory layout as the project layout, which confuses the VCS when you move or rename things), but this can be worked around and isn't a problem for everybody.


You can query the GUI system to see if a click was consumed by it, and then ignore the click in your world objec picking code. Cumbersome, but works.
Sean Middleditch

How would you do that?
Kylotan

There's a property on the input system object to get the "hot" element's id, which will be zero if there is no GUI element under the cursor. Forget the exact property name, should be in the unity scripting reference though.
Sean Middleditch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.