找回密码
 立即注册
查看: 944|回复: 13

[笔记] 用 Unity 3D 开发游戏,熟悉 C 语言和 C++ 是否重要?

[复制链接]
发表于 2021-2-9 06:21 | 显示全部楼层 |阅读模式
用 Unity 3D 开发游戏,熟悉 C 语言和 C++ 是否重要?
发表于 2021-2-9 06:22 | 显示全部楼层
题主的认识很明智了。对Unity开发者来说,C/C++并非必要的,但是很多公司还是非常喜欢有C/C++基础的程序员。
虽然这个问题已经比较老了,但是参考价值至今依然存在。不仅是Unity,甚至很多公司招聘Python后端也是熟悉C/C++者优先。
我认为原因大概可以归纳为:
1、熟悉C/C++是有过系统性学习经历的一个标志,C/C++水平高代表着有良好的计算机基础。
2、很多老牌游戏公司虽然客户端是Unity,但服务器与外围工具链会使用大量C++技术。熟悉C++有助于了解项目整体设计,如果看不懂C++代码可能client、server联调都会很麻烦。
3、网易、腾讯等技术积累较深的公司,C++是主流技术,特别是服务器端。
4、Unity客户端也有可能涉及到C++。很多成熟项目历史比较久,在早期客户端也用到了C++编写的库,例如定制的模块和通用库。


学习C++对于绝大多数小公司来说必要性不大,也不是做出好游戏的必要步骤。只是对你进入一线大厂帮助会很大。
到了2018年的今天,招聘时对C/C++的要求会略有降低,但是依然是一个门槛。
发表于 2021-2-9 06:28 | 显示全部楼层
根据我遇到的情况,我可以说不重要。使用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。
发表于 2021-2-9 06:28 | 显示全部楼层
不只是游戏开发,互联网行业,游戏行业招聘要求肯定有一条,熟悉c++(招java除外),更有甚者,有多少年的c++开发经验,但是把你招进去之后,几乎不会写c++。原因很简单,c++包罗万象,有很多可以借鉴的编程手法和经验,也是考验你编程能力最好的语言。如果你c++学得好,无论你用c#,Python,lua做游戏,都很快就能直接上手做开发。而假设你只会C#,只是会一门普通的编程语言和一堆堆死框架而已,没什么技术可言,根本看不到你的技术能力。
发表于 2021-2-9 06:30 | 显示全部楼层
C++挺重要,游戏引擎大部分都是C++写的。在游戏业,C++技能非常重要。服务器C/C++也占绝大多数。使用php大多是短连接游戏,在中度以上游戏中都不会用。
发表于 2021-2-9 06:37 | 显示全部楼层
我相信这些公司的Unity 3D都有源码,源码应该是C++的。C#只不过充当Unity的脚本语言。通常来说,有了源码,就会根据自己的需要修改引擎,然后自然就会要求精通C或者C++了。
发表于 2021-2-9 06:39 | 显示全部楼层
如果是在祖传代码的基础上开发会C++优势很大,很多祖传代码是用C++写的,尤其是老网游的服务端。
如果是全新开发的话C/C++的影响就很小了,新的设备让逻辑不再那么需要提升效率了,C++也就不是必须选项,不过学过C/C++的人似乎对内存和运行速度会产生一种强迫症一样的注意力,没准对优化有帮助。
发表于 2021-2-9 06:45 | 显示全部楼层
c++在Unity开发游戏中还是有用武之地,如果要追求极致性能,很多实时运算可以考虑非托管c++实现,或者你必须得用某些当前unity版本对应的mono又不支持的api而你又不想冒着风险升级unity时,也可以尝试用c/c++来实现.  最近正在项目中尝试c++重新实现网络层, 具体性能的提升还待profile.
发表于 2021-2-9 06:55 | 显示全部楼层
某个前同事老是分不清结构体和类类型的区别,被质问的时候解释说:我已经修改它了,为什么没有生效
发表于 2021-2-9 06:58 | 显示全部楼层
这些只是觉得说你会c或者c++,基础会很好,然后再来搞c#也不难
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-5 03:56 , Processed in 0.092327 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表