C# 如何進階?

c#語法都看完了,感覺還是不會做實際的項目,怎麼才能轉為實際的項目?


2016.11.2 更新

感謝各位小夥伴的關注,幾個月來不斷收到贊和評論,誠惶誠恐......

這幾個月一直在忙著校招找工作,真是一波三折,經歷都能寫一篇中篇小說了......最後簽了帝都的Soul Game~

既然工作安定下來了,就再說幾句吧......

1.關於源碼,電腦格式化了很多次,源碼基本沒了。其實前幾個小軟體核心代碼很少的,也沒用到多少演算法和數據結構,我個人數據結構和演算法一直很菜,基本不用複雜的= = ...就是調用了一下C# 的一些API,訪問進程信息啊,正則表達式啊,HttpRequest這些,先把邏輯想明白,然後多多google~

比如,開發第一個軟體LOL Killer的思路:

第一步:學習C# Winform編程基礎——理解事件驅動的編程模型,delegate/event,BeginInovke的用法,圖書館隨便借一本C#教程書應該都有相關的教程。

第二步:通過MSDN查閱C#獲取系統進程的API,關鍵字搜索「MSDN C# 獲取進程信息」,即可得到Process 類 (System.Diagnostics),或者一大堆博客教程。

第三步:用一個定時器每隔若干秒檢查系統進程信息中是否存在cmd,任務管理器和LOL的進程,存在就殺掉。

編譯生成,OK,這個軟體就完成了。

純C#語法或CLR的研究推薦三本書,我目前也只是剛看完第二本:

《C# 本質論》-&>《深入理解C#》-&>《CLR via C#》

2.關於後幾個遊戲項目:

區分一下一是純C#做的遊戲,二是用Unity做的遊戲。

純C#遊戲項目(魔塔)用到的東西就相當多且雜了,雙緩衝啊,遊戲循環模型啊,這些可以去找一下《北風網網友原創C#版本勇者斗惡龍遊戲全套》[壓縮包]其它資料下載這個教程看看,但是至少看看就好,想要深入學習遊戲開發相關內容的話,還是用C++從OpenGL/DirectX學起。

Unity做的項目就很簡單了,NGUI直接拖各種控制項.....Unity教程我主要去這4個網站看:

【遊戲蠻牛】-虛擬現實,unity3d,unity3d教程下載首選u3d,unity3d官網

泰課在線 - 國內專業的Unity在線學習平台|Unity3d培訓|Unity教程|Unity教程 Unreal 虛幻 AR|移動開發

遊客學院 - 完全商業標準遊戲開發在線課程

他的主頁-老師個人主頁

個人感覺蠻牛和泰課偏向基礎;麥子學院的一些課程講解很深入;遊客學院有很多實戰性很強的教程,比如uLua,熱更新的教程,但是也比較貴,土豪可以考慮一下。

3.Unity客戶端方向校招需要達到的水平:

評論區還是有很多同學關注Unity的就業的,作為應屆非名校本科生,經歷了今年校招,所以這一塊還是可以說一下的。

(1)大廠的Unity崗位,網易騰訊之類

首先要精通C/C++計算機系基礎(操作系統,數據結構,常用演算法,計算機網路),沒錯,即使你工作用Unity,因為這些不行的話筆試是過不去的;接著是圖形學,圖形學基本原理+OpenGL/DX至少學一個,Unity的渲染流程和ShaderLab了解的話,有加分;然後是Unity常用插件的源碼,NGUI/UGUI至少看一個吧...還要iTween/DotTween/HotTween/uLua啊,最後是遊戲里常用的演算法:相交性檢測,無縫地圖載入,AOI,遊戲資源管理,性能分析,遊戲架構等等。你會不會C#和Unity是無所謂的,主要看基本功(C++演算法),進來後會培養你.....

(2)小廠的Unity崗位

注重實戰能力,不會C#和Unity基本是不行的,當然你學習能力特彆強也可以啊。

一些遊戲開發方向推薦的書籍(排名無先後順序):

(1)《Unity Shader入門精要》

(2)《Lua程序設計》

(3)《遊戲編程模式》

(4)《遊戲人工智慧編程精粹》

(5)《深入理解C#》

(6)《Windows遊戲編程大師技巧》

(7)《3D遊戲編程大師技巧》(上下兩冊)

(8)《Introduction to 3D Game Programming with DirectX 11》

(9)《OpenGL編程指南》(第8版)

(10)《3D數學基礎:圖形與遊戲開發》

(11)《遊戲引擎架構》

(12)《遊戲開發中的物理學》

(13)《Unity 3D人工智慧編程》

(14)《遊戲編程精粹》(系列,共8本)

想到再補充,這些書有難有易,請酌情食用,電子版有的是,讀書人看盜版書...不能算盜...

最基本的書還是要慢慢看的(下面的其實我一本沒看過= =,準備看):

(1)《演算法導論》

(2)《C++ Primer》

(3)C++的各種對象模型,STL剖析

(4)《編譯原理》

(5)《深入理解計算機系統》

(6)《計算機程序的構造與解釋》

以上這些基本都是機械工業出版社的大黑皮書......

最後強烈建議多練習看遊戲源碼,插件源碼,學習學習編程思想與遊戲架構,多逛逛Unity官方論壇,讀一遍Unity官方的API文檔。

源碼站也有很多,下面就是一個:

【9秒社團】-Unity3d跨平台3d遊戲客戶端引擎

官方站點:

Unity Community

先說這些吧,取匿了,有問題歡迎私信交流~

更新一個簡易的陰陽師輔助:

==============================原答案==============================

這個問題我來作為一個初學者回答一下,求諸位大神輕噴。

大一下接觸到C#,主要是當時想做帶界面的程序.....

也是先看語法,然後慢慢做些自己覺得有意思的東西,最好帶界面。

興趣驅動的學習效率還是很高的。

現在已經過去兩年了,小項目做過很過,貼上來幾個多次重裝系統還找得到的,希望能給大家一些靈感。

1.LOL屏蔽器,開發的動力就是想戒掉LOL。。。。。

主界面是這樣的...

輸入屏蔽時間開始運行後,任務欄看不到程序圖標。每隔0.5s掃描系統進程,殺LOL和cmd窗口,任務管理器,進程名字改成scvhost,不重啟或註銷幾乎停不下來。代碼也就200多行,不過可以練習下C#操作作進程和線程的API。

如圖,無法取消。

2.類似小東西:

(1)LOL戰鬥力查詢

沒開發完,主要就是下載網頁,轉成string匹配內容。涉及到網路操作和正則表達式。

小東西,不過很方便。

地址一鍵轉經緯度軟體,讀取Txt輸出txt,一次可以查30萬個,用的百度地圖API,主要使用了Task開多線程。

3.遊戲系列:

這個掃雷基本就是WinForm的按鈕拼成的。

C# 自帶的GDI繪圖,發牌移牌時幀數很低就是了。

同上,魔塔只做了一層。每一層就是一個二維數組....擴展起來很方便。然後接觸到了Unity,恰好可以用C#編寫腳本。大二做的問道登錄界面:

然後成功入坑Unity!現在大三,在杭州一個遊戲公司實習Unity開發。

當然C#能做的事情非常非常多,這裡只是提了一個方面。

總結一下嘛,就是興趣驅動,解決實際問題,多動手。

文字表達很不流暢,總之希望能給題主一些啟發^ ^。


果斷unity啊!


不僅C#,學習者在接觸了基本語法後都會不知所措。

我們可以用console寫出一些東西,拐彎抹角地用上各種奇怪的特性,實現一個邏輯。

我們可以造出一些類型的輪子,實現自己的數據結構庫,但是難道廣大程序員的工作僅僅是這樣子嗎?

如果寫圖形界面當然會酷一點。

語法的書是不會講圖形界面的框架的,它們是建立在語法之上的。作者用了大量底層的代碼,和彙編交互,從一條一條線畫起,最終達到了那麼易用的控制項啊什麼的通過拖拽就可以形成代碼的功能。你會發現每個控制項都對應著它自己的大量代碼。

而所謂進階,你需要的應該是怎麼通過框架來製作應用。剛接觸的時候你會發現,這些是比console好寫的多的。你需要關注的目前只是一個個callback。難度在於熟悉控制項們使用的方式。一個簡易的圖書館系統你甚至可以先寫個不用資料庫的版本。底層的數據結構很簡單。

通過這一階段,你可以比較熟練的使用框架的基本功能。

市面上很多實戰啊什麼的書,都可以拿來學習框架。

當你的底層邏輯漸漸複雜起來,console裡面練習的東西就會顯出意義。


你可以使用WinForm或者WPF開發一個音樂播放器,體驗在.NET平台下快速開發Windows應用;

你可以從頭開始寫一個HTTP伺服器,向人們證明開發伺服器並非是Java和PHP的專利;

你可以設計一個輕量級的內存資料庫,配合Linq體驗面向對象和NoSQL的快感;

你可以使用C#實現一個簡單的語法分析器,就從簡單四則運算開始,這是開發編譯器的第一步;

你可以在C++中集成Mono,為C#提供跨平台的運行環境,跨平台不再是夢想;

你可以使用委託和觀察者模式實現一個不同模塊間通信的消息機制,探索委託與事件的內在聯繫;

你可以考慮實現一個類似迅雷的多線程下載器,實現對所有下載任務的管理。


Csharp有庫可以寫PC QQ的應答機器人,在製作時還會涉及到語義分析等知識點,如果做複雜點的話還可以做圖像處理。

私以為是不錯的練手工程。吾在這個方向做跑團機器人做的很開心,特此推薦


網易雲課堂上有 @金旭亮金老師的《面向對象軟體設計實踐》系列課程,從頭看一遍,照著做一遍。

然後多試著做些自己日常工作中可能用到的工具


《論熟讀中學課文《賣油翁》的必要性》


3年半c#路過, 了解語法後閱讀《C# 本質論》《深入理解C#》《CLR via C#》,尤其後兩本。然後去看c#5.0的語言規範,對了 c#7 好像快出了,msdn都有。接著去看看.Net Core 去學學.Net的反編譯。這樣你的基礎肯定差不多了,然後要看你的發展方向了web,遊戲or其它。


假設你已經把語法部分學習得差不多了,那進一個小階的辦法是寫一個小型的應用練手,實用型的工具最好,沒有就做個遊戲吧,俄羅斯方塊之類,貪吃蛇也行,記住一定要從零開始做,不要去參考任何人的做法,自己從無到有構建一切,最終一定是要做到功能雖然少但一定要完整。蛇動起來不算,你得計分,你得增長,你得有音效,執行文件你得有個像樣的圖標 ,做的越正規越好,越像那麼回事越好。

這些弄完,你會發現你對手上的一套工具的理解就更深入了。

更重要的是,你會發現,接下來要學的框架之類是解決什麼問題的了,有了明確的目標,提高就不難了!


16年10月中旬以前我就是個純網管,算是剛剛開始自學,寫了點小東西,一個金蝶的物料導入插件,一套電子設備台賬管理,做了個計算機信息收集插件,我沒覺得我做了什麼東西,然後就漲了2k工資。。。。

上大學的時候接觸過一部分編程,學校里就是一個學期換一門語言,一周5天4天在網吧里過,基本上學不到東西,也沒感興趣。現在想想,是因為當初沒有想實現的萬一,學了用不到,自然沒心情。

現在我個人觀點來看,一切圍著需求轉,有需求了,現學現賣,能自己寫就自己寫,不能的就去抓個程序員請他吃頓飯幫著研究。。。。我姑妄說之你姑妄聽之。。就醬


發現樓上好多大神, 膜拜膜拜。根據眾大神的建議。暑假在看《head first c#》, 《c#本質論》這兩本還沒看完看了100多頁。在理論書看了一半《黑客與畫家》,《編程之美》,前者類似哲學類型的,後者講微軟的一些面試題,感覺收貨還是有一點的,雖然還沒有看深入。 這4本是這個假期的任務。 一如.net深似海。

本質論這本書講的比較理論,比較空泛。沒有實戰經驗的看起來會蒙逼,像不知所云的感覺。 所以我轉看c#入門經典了。

------------------2016.9.30-------

9月份 看了一些書 ,給自己一個記錄

1《.黑客與畫家》

2.《數據結構與演算法分析 》

在打基礎,還要繼續努力。


那就去找項目去做啊,自己想幾個現實中場景,電商,品牌官網,論壇博客。

不願意動手總有借口,願意動手攔也攔不住


你可以複習一遍,確認真的掌握後開始做一個編譯器,哪怕是玩具級的也可以,然後你會發現你學會了很多,然後你嘗試重構,讓它變得健壯,恭喜你,只要你做了你就會成功,失敗了不可怕,學到代碼重構技巧以及有良好的代碼習慣很重要。(快逃


我也要開始自己的大學第二專業了,堅持了10天了每天都在看C#的語法和寫代碼的規範 感覺好乏味好枯燥 我要堅持


看完不會很正常,要不斷的實戰練習,多造幾個輪子。個人博客是最好的練手項目。


如果你只是學了語法,對不起,你還是做不了任何的項目。我假設你要開發web項目,

路線是:語法-》http://ASP.NET MVC-》CLR VIA C#,之所以把 MVC 放在 CLR之前,是讓你找到感覺做了些有用的東西,找到編碼的樂趣。

完成了CLR,研究下開發的Orchard,讀源碼,繼而讀.NET的源碼。


先看一些實例教學的書籍,依葫蘆畫瓢,感受一下實際項目的開發流程。

再不看書,完全獨立實現一樣的實例,看看能不能重複。

實踐百遍,其義自見。


嘗試給這個項目https://github.com/yh200212121212/KindleHelper加功能


我認為首先你得有一個方向和目標,因為你所學的語法甚至框架,都是你實現這個目標的工具,僅此而已。

你所關注的只是C#的"語法",而不是怎麼用c#做一個項目,所以你的無所適從是正常的。

解決辦法自然是按樓上所說的,先練習做一個WPF項目/控制台程序/WebApp,體會一下怎麼把c#應用到實際項目中咯。


跨專業學習嵌入式後又接觸C#,怎麼進階


推薦閱讀:

Unity中打包Texture到AssetBundle反而比原資源jpg格式還要大,該怎麼減小空間?
我是否該踏入遊戲行業?
如何評價Unity5中多人遊戲和網路模塊UNet?
想學習unity3d,哪位能給個學習路線圖?謝謝
獨自摸索unity近兩年了,沒跟過完整項目,想自己搭建一個通用框架,不知道如何下手,從哪入手?

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