用Unity3D C#开发游戏客户端,一眨眼,发现竟然也用了8年了。2018年10月开始,将之前C++的底层代码封装出C#接口,游戏服务器也开始全面得用C#开发。Windows上开发,生成DLL,原封不动传到Linux上,用.net core直接跑起来。
因为语法原因,C#开发效率比C++高太多太多了。C#主要有如下优点:
委托,用起来就像动态语言一样方便,C++要借助std::function & std::bind;
委托传递参数的方便性,这个不知道该怎么表述;
多态,基类的构造函数里也可以调用虚函数;
数据类型,short, int, long位数是确定的;
static类&成员函数,用起来特方便,大部分情况下,都不须要用Singleton;C++用个静态变量的时候,感觉蛮诡异的;
using引入其他模块的方式,不用考虑代码的目录结构,调整代码目录结构,修改类名之类的太方便了;相对来说,#include方式就反人类了;
属性用起来非常简洁自然;
反射,可以直接用;
泛型运行时功能比C++强大,可以写下面这样的代码:
public override T Obj<T>(Ot type)
{
T obj = null;
switch (type)
{
case Ot.ItemBag:
obj = _itemBag as T;
break;
case Ot.ItemHash:
obj = _items as T;
break;
case Ot.HeroHash:
obj = _heroHash as T;
break;
}
if (obj == null)
obj = base.Obj<T>(type);
return obj;
}
C#接口也需要Add Refrence(链接)才能用;C++接口仅仅是编译时的概念,这点C++方便一些;
另外,C#标准库比较完整规范。