找回密码
 立即注册
查看: 325|回复: 5

想做游戏开发要深入c/c++还是c#?

[复制链接]
发表于 2023-11-4 16:45 | 显示全部楼层 |阅读模式
本人想做独立游戏开发,但是筹备学像c++这种可以做的事多一点的语言,以后游戏开发不行了还可以退而求其次,去做软件开发啥的,但是适合我这种独立游戏开发的是unity引擎,它仿佛只能用c#,所以我该深入去学c/c++还是c#?两个都去学我怕最后是哪个都不是精通
发表于 2023-11-4 16:46 | 显示全部楼层
如果你真的想从事独立游戏开发,那么我建议你先学习c#,因为这是unity引擎所支持的语言,也是游戏开发领域最常用的语言之一。一旦你学会了c#,你就可以开始使用unity引擎开发游戏了。在学习c#的同时,你也可以学习c/c++,这些语言都是编程领域的基础,学习它们可以让你更加熟悉编程思维。
发表于 2023-11-4 16:46 | 显示全部楼层
根据题主描述提三点建议:


  • 先选择一个语言、选择一个引擎能入行
  • 确保精通一个及已入行的情况下,技多不压身
  • 不必想日后的”退而求其次“,现在的事情还没有开始做就想以后,太过虚无及功利了
下面是这三点的详细说明:
【选择其一,确保可以入行】

先找个游戏厂上班做商业游戏(游戏公司招聘上面有明确的技术要求可作为学习目标),积累经验和人脉,再去做自己想做的独立游戏。这样既保证有足够的金钱做支撑,在工作过程中也可以结交志同道合的人从而可以沟通交流自己的想法。一个人闭门造车是做不成很好的东西的。
下面是三种语言的优缺点:

  • C :
优点: 语法简单,语法入门快,跨平台能力强,无运行时消耗
缺点: 生态配套差,基础库太简单,没有现代编程设施(面向对象,等)
总结: 适合做系统支撑型软件,不适合做应用和游戏

  • C++:
优点: 跨平台能力等同于C,有丰富的语法支持,为数不多有现代编程设施的无运行时消耗语言
缺点: 语法复杂,学习曲线陡峭,容易踩坑
总结: 主流的游戏引擎都是C++编写,如果你的目标是游戏引擎,而不是游戏本身,推荐C++(做好头秃准备

  • C#:
优点: 生态完备,大量现代语言特性
缺点: 有运行时消耗,需要依赖虚拟机做跨平台(目前主流平台都有支持)
这两篇文章可能更好地助你选择:

  • Unreal 和 Unity 3D 各有什么特点?如何选择?
Unreal 和 Unity 3D 各有什么特点?如何选择? - 知乎 (zhihu.com)

  • C#(csharp)这门语言的优势在哪?
C#(csharp)这门语言的优势在哪? - 知乎 (zhihu.com)
【技多不压身】

注意,在学习前期要避免”贪多嚼不烂“,慢慢的要”技多不压身“。
关于unity和ue做游戏方面的文章,推荐这几篇:

  • 如何学习虚幻引擎的Blueprint?
如何学习虚幻引擎的Blueprint?

  • Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?
Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?

  • Unity有哪些适合拿来练手的游戏项目?
Unity有哪些适合拿来练手的游戏项目?

  • github上有什么好的unity开源项目?
github上有什么好的unity开源项目?【就想现在,立刻开始】

时代在进步,互联网一直在飞速发展。”退而求其次“在一个人不同阶段、不同处境、不同年龄都会有不同的退法。所以
确定目标、方向和计划固然很重要,但千万不可把时间浪费在此之上,更不可制订了却不去执行,否则就会失去了意义。世界上没有一成不变的事物,计划赶不上变化,放弃那些无效的想法,立刻开始行动。这样,你就离成功不远了。
发表于 2023-11-4 16:47 | 显示全部楼层
一门语言都不会别好高骛远学啥游戏开发。先学了再问。一点好奇心都没有的人啥都学不好。我敢肯定,你就是提问,然后做个梦而已,不然早就学了。

知乎上这类问题,都劝退好了。但凡真想学啥的,从不问人该学啥,而是学到啥不懂的时候才问人。

学习这种事太功利,最后肯定是啥都不会学的。毕竟学习不如打王者荣耀快感来得快。
===============
我居然回答过了。正经回答一下,做游戏开发两个都要学,而且要学用c#调用c++。这是基本功。

当然,如果用unity只要会c#就行,但你问的是做游戏开发,游戏开发可不止unity和ue。
发表于 2023-11-4 16:47 | 显示全部楼层
深入当然是C#,因为C++这玩意,正常人根本没法深入,都是抄在一个笔记里复制粘贴。
所谓深入,也就是笔记记得很全,复制粘贴很熟练。。。万一哪天笔记丢了,问题可就大了,几乎要重学一遍。
喜欢C++的只会有两种人,要么是只写过C++,要么是从没真正动手写过C++。
标准库就像“要你命3000”一样,同一个问题,每个人都有多种完全不同的解法,且互不通用。
就光说把各种类型转成字符串,就有几十种方式。类型不同,转法不同。带不带指针,转法又不同。
反观C#,不管啥类型,一个Tostring()就完了。
也许有人会一脸鄙视的说,“你知道到底怎么转的吗”?“能解释原转换过程吗”?
不能。那是编译器和CPU的工作。我只有一颗肉脑袋,算力极差,费不了晶体管的神,操不动半导体的心。
我只知道写一个Tostring(),就能得到字符串,我觉得这就够了。
我的水平确实仅限于此,至少不翻笔记,我也会写Tostring()。总好过笔记一丢,啥也写不出来吧?
另外,C++的面向对象很不正规,它没有真正意义上的类。C++里的类,本质上是头文件。相比其他面向对象语言的类,如Java、C#等,用法有很大区别。
最后一点,至于API为啥要复制粘贴,而不手敲?只要看一看C++常用库里那些类名、方法名、属性名长啥样?怎么调用?怎么传参?
想一想,这些东西真的是正常人脑能记住的东西吗?然后。。。
*(void *)你_::自_己<<就_sta_ _:知_道_&答_案_->了_t;
发表于 2023-11-4 16:48 | 显示全部楼层
大部分功能用C#就能做了。部分搞花活才用C++,主要要自己接多个平台就比较累。
所以整个熟手玩起来再说。
至于怕什么以后不会的事,语言这东西不是重点,重点还是对内存布局 对寄存器 堆空间 栈空间的理解。搞清楚这些,用个顺手的就行
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-2 04:47 , Processed in 0.102282 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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