Unity ใช้ C # ในเวอร์ชันอื่นหรือเหมือนกันทั้งหมดหรือไม่ มันดูแตกต่างจาก C # ปกติ แต่มีองค์ประกอบ C # ปกติอยู่ในนั้น
Unity ใช้ C # ในเวอร์ชันอื่นหรือเหมือนกันทั้งหมดหรือไม่ มันดูแตกต่างจาก C # ปกติ แต่มีองค์ประกอบ C # ปกติอยู่ในนั้น
คำตอบ:
ตามที่ระบุไว้ในคำตอบอื่น ๆ Unity 4.x ใช้Mono รุ่นที่แก้ไขแล้วตามMono 2.6
ส่วนใหญ่มันใช้งานได้กับ. Net 2.0แต่ฉันก็ยังไม่สามารถติดตามรายการความเข้ากันได้เฉพาะของ Mono 2.6 ได้
มันดูแตกต่างจาก C # ปกติ แต่มีองค์ประกอบ C # ปกติอยู่ในนั้น
ดังที่กล่าวไว้ในหนึ่งในความคิดเห็นเกี่ยวกับคำถามของคุณน่าจะเป็นเพราะ API สคริปต์เฉพาะของ Unity มากกว่าภาษานั้น
เป็นตัวอย่างรหัสจำนวนมากในโครงการ Unity ทั่วไปมีอยู่ในคลาสย่อยของคลาสที่เรียกว่า MonoBehavior เหล่านี้คือส่วนประกอบที่ถูกทิ้งบน GameObjects ภายในสภาพแวดล้อม Unity Editor สถาปัตยกรรมนี้นำไปสู่รหัส C # ที่มีลักษณะแตกต่างจากรหัสทั่วไป C # (สำหรับฉันอยู่ดี) ในหลายวิธี:
พูดจริงคุณลักษณะภาษา C # ที่ใหญ่ที่สุดที่ฉันพลาดในรุ่น C # ปัจจุบันของ Unity คือการสนับสนุนasyncและคำหลักและฟังก์ชั่นที่เกี่ยวข้อง แนวคิดที่คล้ายกันในความสามัคคีเป็นcoroutines สิ่งเหล่านี้ดำเนินการบนเธรดหลักดังนั้นจึงไม่เป็นความจริงแบบอะซิงโครนัส แต่อนุญาตให้โค้ดที่รันเป็นเวลานานถูกทำลายในหลายเฟรม มัลติเธรดระดับต่ำกว่ายังคงได้รับการสนับสนุน
async
ใน C # ก็ไม่จริง async เช่นเดียวกับในแบบมัลติเธรด - มันยังทำงานบนเธรดหลัก ความแตกต่างที่ยิ่งใหญ่ที่สุดจากมุมมองการใช้งานระหว่าง coroutines และ async เป็นเวลาที่รหัสทำงาน
Unity 4 ใช้ Mono 2.6ซึ่งเป็นการนำเฟรมเวิร์ก. NET รวมถึงภาษา C # มาใช้อย่างสมบูรณ์
ฉันไม่แน่ใจว่ามันมีลักษณะแตกต่างกันอย่างไร แต่โปรดจำไว้ว่า Unity รองรับหลายภาษาซึ่งทั้งหมดนี้ใช้งานได้กับโมโนรันไทม์เดียวกัน เป็นไปได้หรือไม่ที่คุณสับสนC # กับ UnityScript ?
Unity ใช้ C # ปกติ
จากนั้นอีกครั้งเมื่อคุณเขียน C # ใน Unity คุณจะใช้ห้องสมุดจำนวนมาก แต่เท่าที่ฉันรู้ทุกสิ่งที่เป็นไปได้ใน C # นั้นเป็นไปได้ใน Unity นอกเหนือจากความแตกต่างที่แสดงด้านล่าง:
พื้นที่ที่เฉพาะเจาะจงมากขึ้นของ. Net ที่เกี่ยวข้องกับ Windows Forms & ASP ถูก จำกัด การใช้งานผ่าน Unity
ในขณะที่คุณสามารถใช้ Visual Studio สำหรับการแก้ไขและรวบรวมข้อผิดพลาดเวลาคุณต้องสร้างและเรียกใช้ใน Unity IDE
Unity ใช้ Mono ซึ่งเป็นการใช้งานโอเพ่นซอร์สของ. Net ซึ่งหมายความว่ามีความแตกต่างเล็กน้อย
คำถามที่ว่า C # เวอร์ชั่นที่ Unity ใช้นั้นแตกต่างจาก C # แบบปกติหรือไม่นั้นได้รับการตอบจากโพสต์อื่น เนื่องจากคุณกำลังขอองค์ประกอบบางอย่างที่อาจแตกต่างจากรุ่นปกติอย่างชัดเจนฉันจะแบ่งปันความแตกต่างเพียงเล็กน้อยที่ฉันสังเกตเห็นเมื่อเปรียบเทียบ C # ที่ฉันใช้ในที่ทำงาน (เช่น C # 4.0 ใน Visual Studio 2010 และสูงกว่า) และ C # ใน Unity ซึ่ง คือฉันไม่สามารถใช้ค่าเริ่มต้นสำหรับพารามิเตอร์ในนิยามฟังก์ชันได้ สิ่งที่คุณต้องตั้งค่าโครงการของคุณอย่างรอบคอบมากขึ้นเพื่อใช้ C # รุ่นที่ใหม่กว่า ดูลิงค์นี้สำหรับคำอธิบายเพิ่มเติม
แก้ไข: ฉันปล่อยให้คำตอบนี้ตั้งแต่เท่าที่ฉันรู้ว่านี่เป็นความเข้าใจผิดที่เกิดขึ้นกับคนจำนวนมาก