Unity3D คุณเขียนโค้ดเท่าใด [ปิด]


16

ฉันอยากรู้ว่าเวิร์กโฟลว์เมื่อสร้างเกมใน Unity3D หรือไม่

มันสร้างรหัสจำนวนมากสำหรับคุณหรือไม่?

ความเข้าใจของฉันคือการที่คุณอธิบายเกมใน Unity และเขียนสคริปต์บน back end เพื่อทำตรรกะ เช่นคุณใช้ Unity เพื่ออธิบายหุ่นเชิดและคุณใช้ภาษาสคริปต์เป็นเจ้านายหุ่นเชิด


คำถามที่คล้ายกัน: gamedev.stackexchange.com/questions/2659/…
Tetrad

2
คุณอาจต้องการที่จะโพสต์คำถามนี้ที่UnityAnswers คุณจะได้รับการตอบสนองที่ดีกว่าเพราะมีความเป็นอันหนึ่งอันเดียวกันมากขึ้น
Joe the Person

คำตอบ:


18

Unity3D ประกอบด้วยเอ็นจิ้นเกมบวกกับตัวแก้ไข 3 มิติ (เป็นพื้นฐาน) มันมีตาข่าย, พื้นผิว, เงา, ภูมิประเทศ, กล้อง, ภาพเคลื่อนไหว, ระบบอนุภาค, ตัวอย่างเสียงและวัตถุประเภทอื่น ๆ ที่มีประโยชน์ในวิดีโอเกม มันรวมถึงPHYSX ( เอ็นจิ้นฟิสิกส์กรรมสิทธิ์ที่ Nvidia เป็นเจ้าของ) และ Mono (การใช้งานโอเพ่นซอร์สของ Common Language Runtime หรือ. NET)

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

คุณสามารถเลือกการทำงานของโปรแกรมทั้งหมดใน Mono (ใช้หนึ่งในภาษา C #, JavaScript หรือ Boo) หรือคุณสามารถเขียนมันเป็นภาษาอื่นและเชื่อมโยงกับโครงการ Unity ของคุณ (การบูรณาการที่เกิดขึ้นจริงกับวัตถุในเกมจะต้องผ่าน Mono แต่นี่อาจเป็นเลเยอร์ที่ค่อนข้างบางถ้าคุณต้องการ)

เวิร์กโฟลว์นั้นเหมือนกันกับเอ็นจิ้นเกมใด ๆ ศิลปินสร้างแบบจำลองและพื้นผิวและภาพเคลื่อนไหวผู้เชี่ยวชาญด้านเสียงทำเสียงนักเขียนโปรแกรมเขียนเฉดและพฤติกรรม

ชุมชนของโปรแกรมเมอร์สามัคคีเป็นประโยชน์มากทั้งที่answers.unity3d.comและforum.unity3d.com (และอาจจะอยู่ที่ Stack Exchange)

วิธีที่ดีที่สุดในการค้นหาคือลองใช้งาน : รุ่นพื้นฐานฟรีและคุณจะได้รับช่วงทดลองใช้ 30 วันสำหรับรุ่น "Pro"


6

Unity3D เป็นมากกว่า wrapper / library มากกว่าเอ็นจิ้นเกม 'drag and drop' มันไม่ได้สร้างรหัสหรือมันมาพร้อมกับสคริปต์ 'off-the-shelf'

ตัวอย่างเช่น Unreal มีกล้องเริ่มต้นตัวแรกตัวควบคุมอักขระการตรวจจับการชนและ AI

คุณไม่มีสิ่งนั้นใน Unity3D สิ่งที่คุณได้รับจาก Unity3D คือลูปเกม, ระบบเอนทิตีที่อิงส่วนประกอบ, ไลบรารีคณิตศาสตร์ที่ครอบคลุม, หมายถึงการโหลดสื่อ, การจัดการตาข่าย, กล้อง, GUI โหมดในทันที, shaders, เรนเดอร์ไปป์ไลน์และฟังก์ชั่นระดับต่ำอื่น ๆ บวกกับโปรแกรมแก้ไขที่ดี คุณเพียงแค่ต้องกังวลเกี่ยวกับฟังก์ชั่นระดับสูง ตัวอย่างเช่นคุณยังคงต้องใช้รหัสกล้องคนแรกของคุณเอง (หากคุณไม่ได้ใช้กล้องตัวที่เป็นค่าเริ่มต้น) อย่างไรก็ตามคุณไม่จำเป็นต้องจัดการกับการคำนวณดูเวกเตอร์และสิ่งเหล่านี้

Unity3D ไม่ได้สร้างรหัสใด ๆ สำหรับเกมของคุณอย่างเคร่งครัด (มันสร้างรหัสสำหรับใช้งานเกมของคุณเพื่อความแม่นยำมากขึ้น แต่ไม่มีสำหรับการเล่นเกมของคุณ)

คุณจะต้องใช้ API เพื่อกำหนดเกมของคุณ คุณสามารถดูตัวอย่างที่มาพร้อมกับ Unity3D และนำรหัสเหล่านั้นกลับมาใช้ใหม่; มีสคริปต์ที่กำหนดไว้ล่วงหน้าสองสามตัว แต่โดยปกติคุณจะต้องปรับแต่งสคริปต์ให้ตรงกับความต้องการของคุณ

คุณสร้างเกมผ่านการสร้างสคริปต์ คุณเขียนสคริปต์สำหรับพฤติกรรมออกแบบระดับใน Unity3D และกำหนดพฤติกรรมเหล่านั้นให้กับเอนทิตี (หรือเกมวัตถุ) มันยืดหยุ่นมาก แต่ก็ยังต้องใช้ความพยายามในการเขียนเกม ฉันจะเปรียบเทียบกับ Flash สำหรับ 3D


1
คำสั่งนี้ไม่ถูกต้อง: "Unreal มีกล้องบุคคลแรกที่เป็นค่าเริ่มต้นตัวควบคุมอักขระการตรวจจับการชนและ AI คุณไม่มีสิ่งนั้นใน Unity3D"
jcurrie33 23

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

1
บางทีมันอาจเป็นการดีกว่าถ้าจะบอกว่าเอ็นจิ้นเกมอื่น ๆ มีระบบย่อยที่แน่นหนากว่า Unity3D เมื่อคุณเริ่มต้นโครงการ Unity3D ใหม่และไม่นำเข้าสินทรัพย์ใด ๆ คุณจะได้รับชนวนว่างเปล่า สิ่งที่ฉันคิดว่าเป็นสิ่งที่ดี บางทีนี่อาจทำให้มุมมองของฉันบิดเบือนไปเล็กน้อยว่าทำไมฉันคิดว่าไม่มีระบบย่อยเริ่มต้น มีเพียงว่าพวกเขาไม่เหมาะกับโครงการที่ฉันต้องทำ และนี่คือหนึ่งในสิ่งที่ดีเกี่ยวกับ Unity3D เป็นเรื่องง่ายที่จะไม่ละทิ้งค่าเริ่มต้นและรหัสของคุณเองหากคุณต้องการ
Extrakun

3

พื้นผิวของ Unity3D ดูเหมือนง่ายสุด ๆ และเกือบทุกอย่างจะสร้างไว้ล่วงหน้า แต่ไม่มีสิ่งใดจริง หากคุณไม่สนใจที่จะใช้สคริปต์ที่มีอยู่แล้ว (ซึ่งมีอยู่ในทุกเอ็นจินจุดที่ไม่ดีกับ Unity) และปลั๊กอินที่คุณอธิบายว่ามีพลังมากเป็นพิเศษสิ่งที่พวกมันไม่แน่นอน Unity เป็นเพียงส่วนต่อโปรแกรมการเขียนโปรแกรม

คุณมีรหัสส่วนใหญ่ด้วยตัวคุณเอง ฉันพบว่าใน 2 โครงการที่แตกต่างกัน


2

การเปรียบเทียบกับแฟลชค่อนข้างถูก แต่ฉันไม่เข้าใจการเปรียบเทียบของคุณกับหุ่น

สิ่งที่ดีเกี่ยวกับความสามัคคีคือ:

  • ข้ามแพลตฟอร์ม: นั่นเป็นข้อดีที่ใหญ่มากฉันจะบอกเหตุผลที่ใหญ่กว่า
  • เอ็นจิ้นคุณภาพสูงและการใช้งานฉันหมายถึงการใช้ Unity gameobjects เป็นต้น
  • ง่ายมากที่จะสร้างเกมง่ายๆตั้งแต่เริ่มต้นซึ่งเป็นข้อดีในการสร้างต้นแบบ

สิ่งเลวร้าย:

  • ไม่สามารถเชื่อมโยงกับ C ++ หรือ C ดังนั้นโครงการของคุณอาจใช้งานได้กับ Unity เท่านั้น ด้วย C # one อาจให้เหตุผลว่ามันจะทำงานบน XNA แต่ C ++ น่าจะดี ด้วยคำพูดนี้ฉันหมายความว่ามันไม่ใช่เครื่องมือที่มืออาชีพที่มีประสบการณ์หรือ autodidacts จะใช้เนื่องจากคุณไม่มีการควบคุมทั้งหมดในใบสมัครของคุณ แต่นี่ไม่ได้หมายความว่าคุณไม่สามารถทำอะไรกับ Unity ได้ ในทางกลับกันทีมที่มีความคิดที่ดีและศิลปินที่มีความสามารถสามารถทำสิ่งที่ยอดเยี่ยมโดยไม่จำเป็นต้องมีโปรแกรมเมอร์ที่มีประสบการณ์
  • มันค่อนข้างใหม่ดังนั้นจึงไม่มีใครรู้ว่าเครื่องมือนี้จะนำไปสู่ที่ไหน

สิ่งที่ฉันไม่ชอบกับ Unity ก็คือมันให้ความรู้สึกเหมือนการทำงานหนักทั้งหมดเสร็จสิ้นดังนั้นโปรแกรมเมอร์จึงมีค่าน้อยกว่ามาก ในทางกลับกันมันยอดเยี่ยมสำหรับการสอนผู้คนอย่างรวดเร็วถึงวิธีการสร้างสิ่งต่าง ๆ อย่างรวดเร็ว

ดังนั้นเพื่อสรุป: Unity (หรือเครื่องมือเช่น Unity) นั้นมีมากกว่าสำหรับศิลปินที่ไม่สามารถติดต่อกับโปรแกรมเมอร์ที่ยอดเยี่ยมได้ แต่ยังสามารถรู้ว่าทำสคริปต์เกมเล็กน้อย แน่นอนคุณสามารถสร้างเกมเต็มรูปแบบเพิ่ม IA จริงทำ mmo net-code และสิ่งที่ไม่ได้ แต่ บริษัท ใหญ่ ๆ จะไม่ใช้ Unity

รูปแบบการเขียนโปรแกรมอนุญาตให้นำเสนอโซลูชันที่เหมาะสมกับเครื่องมือการพัฒนา 3/4 เพื่อให้เหมาะกับผู้ผลิตเกม "อิสระ" มันให้คุณค่ากับเครื่องมือหนึ่งโดยเฉพาะและมันก็ให้คุณค่ากับศิลปิน แต่ไม่ใช่โปรแกรมเมอร์ (ยกเว้นคนที่มาจากทีมเอกภาพซึ่งแน่นอน)

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

มีโครงการส่วนบุคคลอยู่ในใจฉันจะไม่ใช้ Unity เพราะฉันไม่ชอบ C # หรือ Boo (Panda ดีกับ python ดังนั้นทำไมต้องรำคาญกับซอฟต์แวร์เชิงพาณิชย์?) และเพราะถ้าฉันแสดงโครงการของฉันและมันทำด้วย ความสามัคคีมันจะน่าประทับใจน้อยลง


1
แสดงความคิดเห็นตัวเอง: นอกจากนี้ยังมีปลั๊กอินโปรที่อนุญาตให้โปรแกรมใน C ++ ดังนั้นในทางทฤษฎีแล้วมันยังเป็น
เอ็นจิ้น

1

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


1

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

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

มันจะไม่เขียนอะไรให้คุณแทนที่จะช่วยคุณในแบบที่คิดว่าดีที่สุดและให้คุณเขียนสิ่งที่คุณต้องการ

ในหนึ่งคำยืดหยุ่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.