如何看待CE5繼Unity之後又一個支持C#?
謝邀。首先膜拜一下
一個語言的命運當然要靠自我奮鬥,但是也要考慮歷史的進程,我絕對不知道,作為一個專註於cs,bs開發的語言怎麼把我叫去做遊戲來了。所以unity叫我來做腳本,我說,另請高明吧,我實在不是謙虛啊,我一個高大上的語言怎麼可以做腳本這種低端活呢?但是CTO和我說「大家都研究決定了。」後來,我念了一句詩:苟利點耐生死以,豈因禍福辟驅之。
@戴路
如何評價CryEngine V? - 知乎用戶的回答1、C#語言伸縮能力強,從unsafe,到async,可以選擇性實現。
2、C#是靜態語言,性能不差,而且編寫時候就能通過語法檢查很多錯誤,相對穩定。3、C#是個成熟的語言,坑少,開源,腳本引擎實現已有先例。4、C#語言自身是為各種方便的模式而設計,如前所說的async,使用很方便5、C#是C族語言,容易入門。
6、使用C#不用擔心被告。綜上C#是個很好的選擇。這更加說明C#是一門優秀的編程語言啊,在國內Web開發被PHP和Java長期佔據的這樣一種現狀下,越來越多的遊戲引擎支持C#語言,其實是在給微軟技術陣營里的開發者謀求出路,Unity3D就是非常好的例子。
使用C#作為腳本語言,從某種程度上來說是Mono的作用,因為通過Emebdding Mono技術可以將Mono運行時嵌入到C/C++程序中,這樣C#可以作為腳本級別的語言和底層進行交互,這種架構非常適合遊戲開發,Python和Lua都是腳本語言,編程語言都是工具啊,做什麼很重要。
關於C#語言的優點在答案中已然給出了,所以對這個問題就不再贅述了,現在微軟正以開放的心態迎接世界,隨著.NET開源、Visual Studio 2015 社區版免費、Visual Studio Code等一系列事件,我覺得這個事情非常合理啊,有一個跨平台的工具Mono和一門優秀的編程語言C#,CE何樂而不為呢?雖然相比Unity和虛幻顯得有點晚!
2016年4月5日更新:
昨天得知Unity正式加入.NET基金會,微軟將幫助Unity完善Mono編譯器、運行時和基礎類庫,如果繼續支持IL2CPP這種黑科技就更好了,可以解決C#相對C++的效率問題,這是一個多麼激動(≧▽≦)/的消息啊,自從新任CEO上任以來,微軟越來越讓我喜歡了,像Win10這種一統江湖捨我其誰的霸氣和在Windows里引入Linux技術以及吸引Windows平台以外的開發者關注微軟的技術,這種氣概除了我巨硬(⊙o⊙)哦不我微軟還有誰呢?哈哈再次更新:我不是要黑Java,以有沒有使用過SSH三大框架來評價一個人的技術,這隻有Java做得出來=_=C#強大,.Net開源,VS免費。綜合起來看,是個很不錯的選擇了。
據說Unigine也全面支持傳C#了,所以首先你需要會用CE/Unigine
謝邀。c#大法好,ce沒前途(大概)。回答完畢。
易用性易學性並不比js差,有內存管理理機制初學者更放心,而且各種工具庫支持,語法也簡潔不奇葩更靠近C++,是腳本編程遊戲的不二之選。
支持c#不算啥。以後會出現c#編寫的引擎。理由是,引擎需要開源定製才能真正提高生產力,c++的代碼風格太雜亂,抽象能力不足,成本高。
編程不是宗教,生產力才是最終決定因素。再怎麼嚷嚷遊戲引擎必須c++開發也阻擋不了c#取代c++的趨勢。
多年前也有人說windows編程離不開c++,現在基本都離開了。
當然,c#開發的遊戲引擎也不是不使用c++代碼,有些庫,還是會用上的。不過,也有可能被替代。因為象assimp .net之類的封裝c++而成的庫,風格上還是跟c#代碼風格不協調的,實際上都要自己再封裝一次,降低了性能。只是沒有功夫重寫的暫時替代品。
c#本該編譯成native來取代delphi,現在卻淪落到去做腳本了。
之前一直用lua語言,但是苦於lua語言的一些弱點,一直想找一個替代品,能:
1 維護性:靜態類型,方便大項目維護2 生態:好的生態能持續提供高質量人才
3 開發效率:好的語法糖提升開發效率4 工具鏈:成熟的工具鏈自動完成,調試,重構,部署。5 通用性:最好能支持桌面開發,這樣整個pipeline就可以盡量用一種語言6 動態性:最好能解釋執行,方便非jit平台動態更新這個表示我剛剛才做的。明白為啥選擇c#了吧。
如果不想混合語言的話,c#明顯勝出。另可參見為什麼遊戲引擎大多選擇使用 C++ 而不是 C 開發? - crazybie 的回答Lua 為什麼在遊戲編程領域被廣泛運用? - crazybie 的回答https://www.zhihu.com/question/40642126/answer/87594081老實說,從我擺弄XNA開始,就知道C#將來會是個開發GamePlay的好語言(遊戲編程大致上可以分為Engine和GamePlay,外行常常分不清,所以動不動就和C++比)。我說說我的考量:
GamePlay是典型的經常需要「大量」、「多變」的「小對象」快速生成和死亡的應用環境(比如一秒鐘就可能有成千上萬個各種「炮彈」、「火花」等亂七八糟的東西產生或銷毀),選擇哪種託管代碼,首要考慮的是「是否有繞過GC的機制」,C#的值類型、甚至還可以開unsafe用指針,當然是最適合不過。
所謂性能問題,大多數人常談的都是「最高性能」,其實遊戲更注重「穩定性」,有性能開銷可以接受,但這個開銷一定是要穩!你可以上到300幀但偶爾幀數會掉到很低;人家只能上270幀,但人家能穩定在270幀不會產生偶爾的幀數暴跌,二選一的話我寧願選擇後者。安全檢查、動態支持,這些開銷是比較固定的,最「不穩」的因素就是GC,也因此為什麼很多遊戲引擎選擇C#而不選擇Java(不單CE5、UE,Unity,OGRE也有.net移植版等,現在又出來個開源的Xenko我估計會火),最大原因就是Java的所謂「萬物皆對象」。
我這裡立下語言:C#會成為遊戲邏輯開發的「行業標準」,學Java人的說法:「生態」開始形成了。
坐等C#成為遊戲界行業標準
推薦閱讀:
※使用unity引擎時有哪些禁忌?
※如何用C#對論壇進行爬蟲?
※C# 里非同步方法該如何理解?
※一個簡單的C#控制台小程序如下,可是不輸出,為什麼?
※如何判斷 string 是否為合法的 C# 變數名?