為什麼用Unity3D開發遊戲是用C#,JS開發而不是用C++?U3D的設計者是怎樣考慮的?

正常來說用C++性能方面不會好一點么?沒學過C#和JS,不太了解選擇C#和JS優勢是在哪方面呢?


現在還有誰做遊戲邏輯用c++的,幾乎全部是封裝的更高層的語言,他們工具齊全,適合快速開發,而c++幾乎是快速開發的災難,U3D被人詬病的是C#和JS都不能熱更,更別說c++了,所以有好事者,用lua封裝c#,國內手游幾乎都是Python或者lua開發。開發周期短,可熱更(這對手游來說很重要)。cocos2dx都做了lua介面,適應市場的需求,我們公司的引擎也都是用Python封裝或者lua的,c++適合寫引擎,卻不適合寫邏輯。


著作權歸作者所有。

商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

作者:慕容小匹夫

鏈接:從遊戲腳本語言說起,剖析Mono搭建的腳本基礎 - Runtime - 知乎專欄

來源:知乎

Why?從為何需要遊戲腳本說起

首先聊聊為何現在的遊戲開發需要使用遊戲腳本這個話題。

為何需要有腳本系統呢?腳本系統又是因何而出現的呢?其實遊戲腳本並非一個新的名詞或者技術,早在暴雪的《魔獸世界》開始火爆的年代,人們便熟知了
一個叫做Lua的腳本語言。而當時其實有很多網遊都不約而同地使用了Lua作為腳本語言,比如網易的大話西遊系列。但是在單機遊戲流行的年代,我們卻很少
聽說有什麼單機遊戲使用了腳本技術。這又是為什麼呢?因為當時的硬體水平不高,所以需要使用C/C++這樣的語言盡量壓榨硬體的性能,同時,單機遊戲的更
新換代並不如網遊那麼迅速,所以開發時間、版本迭代速度並非其考慮的第一要素,因而可以使用C/C++這樣開發效率不高的語言來開發遊戲。

但是隨著時間的推移,硬體水平逐年提升,壓榨硬體性能的需求已經不再迫切。相反,此時網遊的興起卻對開發速度、版本更迭提出了更高的要求。所以開發
效率並不高效,且投資、巨大風險很高的C/C++便不再適應市場的需求了。更加現實的問題是,隨著Java、.Net甚至是JavaScript等語言的
流行,程序員可以選擇的語言越來越多,這更加導致了優秀的C/C++程序員所佔比例越來越小。而網遊市場的不斷擴大,對人才的需求也越來越大,這就造成了
大量的人才空缺,也就反過來提高了使用C/C++開發遊戲的成本。而由於C/C++是門入門容易進階難的語言,其高級特性和高度靈活性帶來的高風險也是每
個項目使用C/C++進行開發時所不得不考慮的問題。

一個可以解決這種困境的舉措便是在遊戲中使用腳本。可以說遊戲腳本的出現,不僅解決了由於C/C++難以精通而帶來的開發效率問題,而且還降低了使用C/C++進行開發的項目風險和成本。從此,腳本與遊戲開發相得益彰,互相促進,逐漸成為了遊戲開發中不可或缺的一個部分。

而到了如今手遊興起的年代,市場的需求變得更加龐大且變化更加頻繁。這就更加需要用腳本語言來提高項目的開發效率、降低項目的成本。


而作為遊戲腳本,它具體的優勢都包括哪些呢?

  1. 易於學習,代碼方便維護。適合快速開發。
  2. 開發成本低。因為易於學習,所以可以啟用新人,同時開發速度快,這些都是降低成本的方法。

因此,包括Unity3D在內的眾多遊戲引擎,都提供了腳本介面,讓開發者在開發項目時能夠擺脫C/C++(註:Unity3D本身是用C/C++寫的)的束縛,這其實是變相降低了遊戲開發的門檻,吸引了很多獨立開發者和遊戲製作愛好者。

從遊戲腳本語言說起,剖析Mono搭建的腳本基礎 - Runtime - 知乎專欄


首先,我想表達我的觀點:

並非是Unity選擇了C#,而是Mono支持C#,並且C#在Mono支持的編程語言中相對優秀和成熟。

Unity 引擎底層是用C++寫的,而Mono為它提供了腳本化的環境,所以說Unity選擇什麼編程語言來作為它的腳本語言,很大程度上取決於Mono,Mono目前支持的語言有C#、Visual Basic、JavaScript、Python、Boo等等,只要官方願意做這樣的事情,編程語言都不是問題。

為什麼選擇C#呢?因為C#是.NET/Mono的主流語言,相對其它語言來說,是一門優秀而成熟的語言,背後由微軟提供強力支持;為什麼不選擇C++呢?答案是為了降低門檻。


C#寫起來方便,入門簡單,並且本身.net庫也提供了很多功能。這樣寫代碼的速度提高了…


可能與現在安卓性能基本過剩有關、


開發者考慮的是……用任何語言開發都比用 C++ 開發更省事。


首先,提問者應該是說前端語言為什麼是C#吧,因為後台可以用C++啊。

其次,前端不用的原因有兩個,最重要的是C++不能熱更新;然後C++程序要稍微貴一點。


因為這裡C#比C++方便省事。遊戲引擎不需要強大的底層操作能力更不需要指針的靈活性(這些是引擎需要封裝起來的東西),而是需要快捷得開發出產品。


用C++性能確實會更好。

虛幻引擎是用的C++寫邏輯,據說王者榮耀是Unity + C++


推薦閱讀:

像缺氧、環世界那些小人自動分工機制是怎麼做到的?
unity 2d 點光源/路燈/手電筒效果怎麼做?
有什麼龍珠相關的遊戲嗎?
玩遊戲玩到該遊戲停止運營是怎樣一種體驗?
「圍住神經貓」這樣的網頁小遊戲是怎樣火起來的?

TAG:JavaScript | 遊戲開發 | Unity遊戲引擎 | C | C# |