用 Unity 3D 開發遊戲,熟悉 C 語言和 C++ 是否重要?
看到很多遊戲公司招聘Unity3D程序員時要求要熟悉或精通C和C++(包括網易騰訊等),但是我自己在開發過程中基本只用到了C#,再就是寫Shader用到Cg編程,寫服務端時要寫一些php腳本。C語言在插件包里看到過,C++基本沒見過。
用Unity3D開發遊戲時,熟悉C語言和C++會有什麼優勢嗎?
根據我遇到的情況,我可以說不重要。使用Unity3d,大多數時候是用C#(js不用也沒有問題),只有在需要寫插件的時候(很少的情況),會需要用到C、C++、Object-C、Java這些語言。我帶過的項目中,很多的程序員都只是用C#,根本就不會接觸到C和C++。
上面的話題是針對做遊戲來說。如果是需要研究3D引擎,那麼C++就非常重要,不需要其他的理由,因為大多數書籍、網路資料,在說明一個引擎(無論是實時渲染還是離線渲染還是物理引擎或者AI引擎)知識的時候,都會用C++來寫代碼,這個是事實上的標準。C語言的話,還是在嵌入式的設備上,以及操作系統的開發上用的多,其他領域應該算是很少用到的。
就這三種語言:C語言是過程式語言的代表,C++是在遊戲領域用的非常廣泛的對象式語言,C#是對象式的、類java語言(簡單說跟C++不同就是不需要顯式釋放內存)。三種語言我都接觸和長期使用,從長期發展的角度來講,根據自己的不同階段,逐漸了解各個語言,主要是能理解其中不同的設計理念和組建自己的工具盒,不怕工具多,在什麼場合用什麼工具很重要。
另:
在我接觸的公司中,買Unity3d source code的公司沒有見過,我相信這個主要是官方的這一點說明(見下面英文中的黑體部分,摘自官方的FAQ):
We license Unity source code on a per-case and per-title basis via special arrangements made by our business development team. As this can be quite expensive, we do not generally license source code to smaller operations, educational institutions, nor to companies in countries which do not have adequate legal intellectual property protection.
也就是Unity不會向對公司所在地是知識產權保護薄弱的國家的客戶提供源代碼級的licence。不只是遊戲開發,互聯網行業,遊戲行業招聘要求肯定有一條,熟悉c++(招java除外),更有甚者,有多少年的c++開發經驗,但是把你招進去之後,幾乎不會寫c++。原因很簡單,c++包羅萬象,有很多可以借鑒的編程手法和經驗,也是考驗你編程能力最好的語言。如果你c++學得好,無論你用c#,Python,lua做遊戲,都很快就能直接上手做開發。而假設你只會C#,只是會一門普通的編程語言和一堆堆死框架而已,沒什麼技術可言,根本看不到你的技術能力。
C++挺重要,遊戲引擎大部分都是C++寫的。在遊戲業,C++技能非常重要。伺服器C/C++也占絕大多數。使用php大多是短連接遊戲,在中度以上遊戲中都不會用。
我相信這些公司的Unity 3D都有源碼,源碼應該是C++的。C#只不過充當Unity的腳本語言。通常來說,有了源碼,就會根據自己的需要修改引擎,然後自然就會要求精通C或者C++了。
某個前同事老是分不清結構體和類類型的區別,被質問的時候解釋說:我已經修改它了,為什麼沒有生效
這些只是覺得說你會c或者c++,基礎會很好,然後再來搞c#也不難
好想在這個問題下發個招聘廣告,不曉得會不會被封。。。
還可以吧,如果C和C++了解的話,當使用unity3D引擎時,不會那麼吃力,C#比較容易入門,學起來的也比較輕鬆
但是U3D用到了MONO,所以c#也佔了很大一部分呢
c++在Unity開發遊戲中還是有用武之地,如果要追求極致性能,很多實時運算可以考慮非託管c++實現,或者你必須得用某些當前unity版本對應的mono又不支持的api而你又不想冒著風險升級unity時,也可以嘗試用c/c++來實現. 最近正在項目中嘗試c++重新實現網路層, 具體性能的提升還待profile.
推薦閱讀:
※自學編程怎麼開始?
※偽程序員想學腳本語言,該如何選?
※面向對象編程的重要性在哪?
※想自學虛幻4引擎,準備以後和熟人一起組建遊戲工作室,請問應該以什麼流程去學習?
※僅僅從職業發展前景考慮,做編譯器開發或操作系統開發哪個方向更有前途?