เกมที่ถูกสร้างขึ้นมาด้วย Unity3D สำหรับลินุกซ์มีไฟล์ในโฟลเดอร์ข้อมูลของพวกเขา.dll
GameDataFolder/Managed
ซึ่งแปลกเพราะฉันคิดว่า Linux ใช้.so
ไฟล์แทน.dll
ไฟล์
(เช่นเดียวกันสำหรับแอพ Android-Unity3D ด้วย)
ทำไม?
เกมที่ถูกสร้างขึ้นมาด้วย Unity3D สำหรับลินุกซ์มีไฟล์ในโฟลเดอร์ข้อมูลของพวกเขา.dll
GameDataFolder/Managed
ซึ่งแปลกเพราะฉันคิดว่า Linux ใช้.so
ไฟล์แทน.dll
ไฟล์
(เช่นเดียวกันสำหรับแอพ Android-Unity3D ด้วย)
ทำไม?
คำตอบ:
เกมที่คุณพูดถึงนั้นขึ้นอยู่กับ. NET Framework และทำงานกับโมโนซึ่งเป็นการนำมาใช้ฟรีและโอเพ่นซอร์สของ. NET Framework ของ Microsoft
เนื่องจากแอปพลิเคชันเหล่านี้ใช้. NET แอสเซมบลีมีส่วนขยาย. dll ดังนั้นคุณสามารถดูไฟล์ DLL ในโฟลเดอร์
โปรแกรม. NET หนึ่งโปรแกรมที่ออกแบบมาสำหรับการใช้งานข้ามแพลตฟอร์มสามารถเรียกใช้บน Windows, Linux หรือ Mac ด้วย "ไบนารี" เดียวกัน (รวมถึง DLLs ซึ่งเป็นแอสเซมบลี) ซึ่งคอมไพล์ใน MSIL และต้องการรันไทม์. NET / Mono .
โปรดทราบว่าคุณยังมีแอพพลิเคชั่นฟรี (ไม่เพียง แต่เกม) ที่อ้างอิงจาก Mono Framework ที่มีอยู่ในที่เก็บ Ubuntu ตัวอย่างเช่น: ทอมบอย
.dll
และ.so
ไม่มีความหมายใน Linux พวกมันใช้เพื่อความสะดวกของเราเท่านั้น
gcc
จะไม่พบห้องสมุดที่ให้มาเช่น-lm
ถ้าชื่อไฟล์นั้นไม่ได้ลงท้ายด้วย.so
หรือ.a
หรือมีรุ่นที่ต่างกันไป
.dll
ไฟล์ในGameDataFolder/Managed
เป็นของโปรแกรมรหัสพื้นเมืองที่ใช้โมโนภายใน
executables ข้ามแพลตฟอร์มและไลบรารีที่แบ่งใช้ซึ่งสามารถรันได้โดย. NET Common Language Runtime หรือ Mono มักจะตั้งชื่อด้วย.exe
และ.dll
ต่อท้ายตามลำดับแม้ว่าจะไม่เฉพาะกับ Windows ก็ตาม เมื่อคุณพบ.dll
ไฟล์ในโปรแกรมสำหรับระบบ GNU / Linux เช่นอูบุนตูหรือสำหรับระบบปฏิบัติการใด ๆ แต่ของ Windows นี้เป็นมักจะทำไม เวลาส่วนใหญ่ที่คุณพบ.dll
ในระบบ Ubuntu คำตอบของ Golbothอธิบายไว้ แต่นั่นไม่ใช่สิ่งที่เกิดขึ้นที่นี่
เอ็นจิ้นเกม Unity - ซึ่งไม่ควรสับสนกับอินเทอร์เฟซแบบกราฟิกเริ่มต้นใน Ubuntu ส่วนใหญ่ - เป็นเอ็นจิ้นเกมข้ามแพลตฟอร์มที่ได้รับความนิยม เอ็นจินนี้ไม่ทำงานบน. NET Framework หรือ Mono แต่มันฝังโมโนซึ่งก็คือการบอกว่าโมโนวิ่งด้านบนของมัน นี่คือวิธีที่นักพัฒนาเขียนโค้ดอะไรก็ตามที่เกมของพวกเขาต้องการซึ่งไม่ได้เป็นส่วนหนึ่งของเอ็นจิ้น Unity
โดยทั่วไป Mono อาจใช้วิธีเดียวกับที่ใช้กับ. NET CLR ของ Microsoft เพื่อเรียกใช้โปรแกรม. NET / Mono แบบสมบูรณ์ แต่โมโนยังได้รับการออกแบบมาให้สามารถฝังได้อย่างง่ายดายในแอปพลิเคชันรหัสเนทีฟรวมถึงเพื่อให้แอปพลิเคชันเหล่านั้นสามารถปรับแต่งได้ นั่นคือสิ่งที่เกิดขึ้นในสถานการณ์ที่คุณกำลังอธิบาย ไฟล์ที่คุณเห็นไม่ได้เป็นของโปรแกรมที่ทำงานโดยตรงบน Mono หรือ. NET CLR แทนที่จะเป็นของโปรแกรมรหัสเนทีฟที่ฝัง Mono
เอ็นจิ้นเกม Unity ซึ่งส่วนใหญ่เขียนใน C ++ จะโฮสต์อินสแตนซ์ของตนเองของ Mono ซึ่งไม่ได้ใช้ - และอาจแตกต่างจาก - เวอร์ชั่น (ถ้ามี) ติดตั้งผ่านตัวจัดการแพคเกจระบบของคุณ ไม่สามารถใช้รันไทม์ Mono แบบฝังนี้เพื่อเรียกใช้โปรแกรม. NET / Mono แบบสแตนด์อโลนเนื่องจากไม่ได้มีวัตถุประสงค์ แต่ส่วนรหัสเนทีฟของเอ็นจิ้นใช้เพื่อรันโค้ด CIL แทน (CIL คือCommon Intermediate Languageซึ่งเป็นชื่อทางการของมันก่อนหน้านี้เรียกว่า MSIL หรือ Microsoft Intermediate Language เนื่องจาก Microsoft พัฒนาขึ้น แต่เดิม) โปรแกรมเมอร์ที่สร้างเกมที่ใช้ Unity engine มักจะเขียนโค้ดของตัวเองในภาษา C # แม้ว่าภาษาอื่น ๆ ได้รับการสนับสนุน
เอ็นจิ้น Unity ฝัง Mono แม้แต่ใน Windows สำหรับเกมUniversal Windows Platform - และไม่มีแพลตฟอร์มอื่น - ใช้ Microsoft .NET Framework แทน Mono แต่เกม Unity ส่วนใหญ่บนแพลตฟอร์มส่วนใหญ่รวมถึงอุปกรณ์พกพาและคอนโซลเกมส่วนใหญ่รวมถึง Ubuntu และ Windows ใช้ Mono ในบางแพลตฟอร์มIL2CPPนั้นมีให้เลือกใช้แทน Mono และรองรับ IL2CPP เพียงไม่กี่ตัวเท่านั้น ดูข้อ จำกัด การเขียนสคริปต์สำหรับรายละเอียด
.dll
ไฟล์บน Ubuntu.dll
มีการอธิบายสองสถานการณ์ที่คุณน่าจะเห็นไฟล์บน Ubuntu:
.dll
คุณเห็นมากที่สุดในระบบ Ubuntu มันไม่ได้เกิดขึ้นกับ.dll
ไฟล์ในGameDataFolder/Managed
โฟลเดอร์ของคุณมีอีกสองกรณีที่พบบ่อยพอสมควรซึ่งคุณอาจเห็น.dll
ไฟล์บน Ubuntu:
.dll
ไฟล์มากกว่า.exe
ไฟล์แม้ว่าสิ่งที่คุณกำลังรวบรวมไม่ใช่ห้องสมุด รันไทม์. NET Core (เรียกว่า CoreCLR) และไม่ใช่ . NET Framework ปกติหรือโมโนเรียกใช้ไฟล์เหล่านี้ .NET Core เป็นผลิตภัณฑ์ของ Microsoft แต่แตกต่างจาก. NET Framework มาตรฐาน. NET Core เป็นข้ามแพลตฟอร์มพร้อมการสนับสนุนอย่างเป็นทางการสำหรับระบบ GNU / Linux เช่น Ubuntu และเป็นซอฟต์แวร์โอเพ่นซอร์สฟรี.dll
ไฟล์ที่คุณเห็นบน Ubuntu จะเป็นห้องสมุด Windows คุณอาจเห็นสิ่งนี้หากโปรแกรมกำลังจัดเก็บระบบ Ubuntu แต่ทำงานบน Windows หรือถ้าคุณติดตั้งไดรฟ์ Windows ใน Ubuntu คุณอาจเห็นว่าเกี่ยวข้องกับโปรแกรมที่สามารถเรียกใช้บน Ubuntu โดยใช้Wineรวมถึงซอฟต์แวร์ที่มาพร้อมกับ Wine หรือติดตั้งโดยอัตโนมัติด้วยwinetricks
เพื่อสนับสนุนซอฟต์แวร์ Windows อื่น ๆนี่ไม่ใช่ความพยายามในการแสดงรายการสถานการณ์ทั้งหมดที่คุณอาจพบ.dll
บน Ubuntu (ตัวอย่างเช่นอาจเป็นไลบรารี OS / 2 ) อย่างไรก็ตามฉันเชื่อว่าทั้งสี่กรณีเป็นกรณีที่พบบ่อยที่สุด