3 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
很有意思的問(wèn)題.
來(lái)看看網(wǎng)絡(luò)大拿們所做的總結(jié).
當(dāng)然結(jié)果需要您自行考慮.
首先,下文摘錄自InfoQ<JS OR C# 不存在的腳本之爭(zhēng)>
到底C#和Unity3D里的JS誰(shuí)好呢?
最常見的問(wèn)題無(wú)非是: 用js寫的u3d游戲和用c#寫的u3d游戲,到底誰(shuí)的運(yùn)行效率高啊?
最常見的回答為非是: 肯定是C#啊,因?yàn)閖s是動(dòng)態(tài)的。肯定不如編譯的語(yǔ)言好。
第二常見的問(wèn)題無(wú)非是: 用js開發(fā)和用c#開發(fā),哪個(gè)更快更適合我?。?/p>
第二常見的回答無(wú)非是: js適合個(gè)人開發(fā),敏捷快速。c#適合公司開發(fā),規(guī)范嚴(yán)謹(jǐn)。
咱們還是用和剛才討論與javascript的區(qū)別時(shí)一樣的思路來(lái)整理C#和UnityScript的不同,也就是按照先本質(zhì),再表現(xiàn)的順序。同時(shí)兼顧回答一下上面的兩個(gè)問(wèn)題。
本質(zhì)求同存異
開篇就說(shuō)了,UnityScript是和C#同一個(gè)層面的語(yǔ)言,也需要經(jīng)歷從源代碼到CIL中間語(yǔ)言過(guò)渡,最終到編譯成原生語(yǔ)言的過(guò)程。所以本質(zhì)上,最終運(yùn)行的都是從CIL編譯而來(lái)的原生機(jī)器語(yǔ)言。但的確會(huì)有C#比較快的現(xiàn)象,那么問(wèn)題出在哪呢?
一個(gè)可能但不是唯一的答案就是 UnityScript和C#生成CIL中間語(yǔ)言不同。
這一點(diǎn)想想也很簡(jiǎn)單,就像上文提到的var的問(wèn)題,如果使用Object來(lái)處理var的問(wèn)題,則不可避免的是頻繁的裝箱拆箱的操作,這對(duì)效率的影響是很大的。
所以的確,C#的速度更快,但原因是UnityScript會(huì)涉及到頻繁的裝箱拆箱操作,進(jìn)而生成的CIL代碼與C#有差異,而并非UnityScript是動(dòng)態(tài)語(yǔ)言且沒(méi)有經(jīng)過(guò)編譯。
現(xiàn)實(shí)很單純
開發(fā)到底是使用C#還是UnityScript呢?如果不考慮運(yùn)行的效率,僅僅考慮開發(fā)時(shí)候的感受,小匹夫就談?wù)勛约旱目捶ê美病蔷褪钦湎r(shí)間,遠(yuǎn)離UnityScript。
首先有幾個(gè)事實(shí)我們要清楚:
UnityScript是脫胎于.NET平臺(tái)的第三方語(yǔ)言Boo的。所謂的第三方語(yǔ)言和C#的區(qū)別,就跟自己到底是不是親生的,爹到底是不是隔壁老王是一樣的。差距可能是全方位,立體式的。社區(qū)支持,代碼維護(hù),甚至是編譯出來(lái)的CIL代碼質(zhì)量都可能有很大的差距。選擇UnityScript之前,問(wèn)問(wèn)自己之前聽說(shuō)過(guò)Boo嗎?別忘了UnityScript和Boo的淵源。
UnityScript和JavaScript除了長(zhǎng)得像之外,根本就沒(méi)有什么關(guān)系。你在JavaScript里如魚得水,在UnityScript中如果不小心就可能埋下隱患,而一些隱患可能藏得很深。而且UnityScript也是靜態(tài)語(yǔ)言,也需要編譯,所以看不出來(lái)選擇它作為開發(fā)語(yǔ)言為什么會(huì)有人覺得快。
插件的支持。貌似大多數(shù)都是C#寫的吧。
好吧,如果上面的3點(diǎn)都不能說(shuō)動(dòng)你,那就看看官方的態(tài)度好了。
U3D官方團(tuán)隊(duì)基于數(shù)據(jù)分析做出的一個(gè)語(yǔ)言被使用的百分比圖。
由于Boo語(yǔ)言的使用量基本可以忽略,所以從Unity5.0版本開始就會(huì)停止對(duì)Boo的文檔支持。同時(shí)消失的還有從菜單創(chuàng)建Boo腳本的選項(xiàng)“Create Boo Script”。從U3D團(tuán)隊(duì)對(duì)Boo的態(tài)度,也可以窺見和Boo聯(lián)系密切的UnityScript未來(lái)的走勢(shì)。
同時(shí)U3D團(tuán)隊(duì)也會(huì)把支持的重心轉(zhuǎn)移到C#,也就是說(shuō)文檔和示例以及社區(qū)支持的重心都在C#,C#的
- 3 回答
- 0 關(guān)注
- 3301 瀏覽
添加回答
舉報(bào)