C# 如何进阶？
2016.11.2 更新 感谢各位小伙伴的关注，几个月来不断收到赞和评论，诚惶诚恐...... 这几个月一直在忙着校招找工作，真是一波三折，经历都能写一篇中篇小说了......最后签了帝都的Soul Game～ 既然工作安定下来了，就再说几句吧...... 1.关于源码，电脑格式化了很多次，源码基本没了。其实前几个小软件核心代码很少的，也没用到多少算法和数据结构，我个人数据结构和算法一直很菜，基本不用复杂的= = ...就是调用了一下C# 的一些API，访问进程信息啊，正则表达式啊，HttpRequest这些，先把逻辑想明白，然后多多google～ 比如，开发第一个软件LOL Killer的思路： 第一步：学习C# Winform编程基础——理解事件驱动的编程模型，delegate/event，BeginInovke的用法，图书馆随便借一本C#教程书应该都有相关的教程。 第二步：通过MSDN查阅C#获取系统进程的API，关键字搜索“MSDN C# 获取进程信息”，即可得到 ，或者一大堆博客教程。 第三步:用一个定时器每隔若干秒检查系统进程信息中是否存在cmd,任务管理器和LOL的进程，存在就杀掉。 编译生成，OK，这个软件就完成了。 纯C#语法或CLR的研究推荐三本书，我目前也只是刚看完第二本： 《C# 本质论》->《深入理解C#》->《CLR via C#》 2.关于后几个游戏项目： 区分一下一是纯C#做的游戏，二是用Unity做的游戏。 纯C#游戏项目（魔塔）用到的东西就相当多且杂了，双缓冲啊，游戏循环模型啊，这些可以去找一下 这个教程看看，但是至少看看就好，想要深入学习游戏开发相关内容的话，还是用C++从OpenGL/DirectX学起。 Unity做的项目就很简单了，NGUI直接拖各种控件.....Unity教程我主要去这4个网站看： 个人感觉蛮牛和泰课偏向基础；麦子学院的一些课程讲解很深入；游客学院有很多实战性很强的教程，比如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文档。 源码站也有很多，下面就是一个： 官方站点： 先说这些吧，取匿了，有问题欢迎私信交流～ 更新一个简易的阴阳师辅助： ==============================原答案============================== 这个问题我来作为一个初学者回答一下，求诸位大神轻喷。 大一下接触到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#能做的事情非常非常多，这里只是提了一个方面。 总结一下嘛，就是兴趣驱动，解决实际问题，多动手。 文字表达很不流畅，总之希望能给题主一些启发^ ^。