找回密码
 立即注册
楼主: 没什么攻击

[笔记] 为什么unity愿意用c#作为代码语言,而虚幻却使用c++?

[复制链接]
发表于 2020-11-25 11:06 | 显示全部楼层
unity用c#的理由猜测是看中了mono,在跨平台支持上更优秀,而且简单,上手难度低。而且你们对c#有啥不满吗,多好用。。。。


虚幻那个时候,估计还只考虑pc市场,没考虑手机和web,就选取了运行效率比较高的语言。。


事实证明,能用unity做出好游戏的团队,其实也可以用虚幻做出好游戏。。语言并不是制约他们上限的因素,人才才是
发表于 2020-11-25 11:07 | 显示全部楼层
选择一门语言需要考虑很多,对于unity来说,需要考虑的问题有:
性能不能太渣。
开发效率不能太低。
能跨平台。
最好要有比较丰富的类库资源。
最好上手比较容易。
最好要有数量不少的已有的开发者。
能当脚本用。
最好背后有一个有钱的金主爹一直在支持。
其实筛选完这几个条件,主流的编程语言,基本上就剩java和c#了。
然后c#在设计上比java要好一些,支持unsafe手撸指针,还有值语义这种游戏开发刚需的东西,选c#也就是很自然的事情,像卡普空的引擎也是用的c#。
发表于 2020-11-25 11:08 | 显示全部楼层
首先c#有指针,unity也提供“allow unsafe code”选项让你使用指针
其次,你在unity里写的代码其实是他们开放给你使用的模块,执行时它只是main函数整个系统里面的一部分,这样的设计能够让开发者更专注于图形和交互,降低了门槛,从市场推广的角度看易于上手是很大的优势,再加上c#有微软和开源社区的托底,跨平台的优势很显著
发表于 2020-11-25 11:08 | 显示全部楼层
对于Unity来说,使用C#语言上手快,坑少,执行效率略低于C++;
对于UE4来说,使用C++语言上手慢,坑多,但执行效率高;
我相信招聘Unity程序员比UE4程序员要容易一些,毕竟学C#比C++还是要容易不少的,我玩了很多年C++,也不敢说C++能运用自如,但一接触C#,就感觉用起来十分顺手,所以Unity的用户基数一定是很庞大的,但是如果想做3A大作,目前来说,UE4可能会更好一点点。
发表于 2020-11-25 11:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2020-11-25 11:10 | 显示全部楼层
unity给普通人用的,看重易推广和好操作


ue,你都用ue了,学个cpp没问题吧,你去学我就不改了
发表于 2020-11-25 11:10 | 显示全部楼层
因为各有各的市场,游戏引擎选用什么语言就和这些语言本身存在的理由一样。C#简单、C++高效。
鹅厂之前大部分游戏都用unity,因为作为世界最大游戏厂商,玩家数量也是世界第一,碰到需要优化性能的地方是常有的事情。之前某款用unity开发的游戏想出来的优化办法是用C++重写一些关键逻辑,做成动态库。
我之前也和我们客户端负责人讨论过,对于unity开发的游戏,优化方法也是一样,采用C++。后来新的游戏就完全放弃了unity,直接采用了ue4,因为ue4从头到尾都是采用C++,想怎么优化就怎么优化。
据我了解从去年开始鹅厂的新游戏全部是ue4。不要说什么ue4魔改C++,ue4并没有改C++编译器,它只不过是做了几个工具,生成C++代码而已。和Qt的套路很像。C++库在UE4中都能用,STL也好,boost也好,protobuf也好,都可以完全正常使用。因为它采用的是纯正C++。
用C++开发肯定要难一些,但是无论如何,它有它的市场。鹅厂应该会成为UE4全球最大的用户。
发表于 2020-11-25 11:11 | 显示全部楼层
Unity官方消息没翻译,我在这里就简单总结一下Unity的脚本语言历史。
Unity 最原先的其实是C#和Boo(类python语言),然后后来用了Boo做了UnityScript(类JS语言)编译器。用了Boo和UnityScript的原因是因为它们的句法简单,适合新手学习,而且既然是内部语言,可以自行修改。
C#的背后是微软,而Boo算是Unity的De Oliveira 单枪匹马负责维修的。那时候的Mono,DotNet都还没那么成熟, 而且不是每架电脑都有DotNet最新的版本,所以用了DotNet 2.0 portable version,能支持的C#版本也不高。
后来因为DotNet逐渐成熟,而维修内部语言的成本越来越高,基本上如果没有巨大团队根本无法竞争。个人觉得大约2010年左右移动端游戏编程越来越普遍,很多人都是Java/C背景的,对C#比较熟悉,加上C#的指针比较完整,导致2010年后的大部分Unity项目都是C#为主。
到了现在,Unity也就只剩下C#了。

而UE本来的设计本来就是给需要更细腻控制的专业人士用的,C#有GC,C++需要自己注意内存分配,基本上就区分了他们的用户群。
发表于 2020-11-25 11:12 | 显示全部楼层
当初Unity有多种脚本语言的时候,可以说是首鼠两端,摇摆不定,mono是开源,但是微软一直没有表态,法律上还是有相当的风险,而比尔盖茨还在公司的时候,不仅仅是windows优先,更是windows唯一,开源?跨平台?绝不可能!
后来态度确定了,那就完全可以放心深入了,之后就一飞冲天,甚至不再需要其他做候补。
UE里的cpp也算是精简版了,基本上也是脚本语言控制引擎的角色,对于开发者来说更多是操作各种封装好的API。
上手肯定是c#快和简单,但真正让开发者纠结的还是引擎本身的繁复度,UE4编译一次的时间确实太久了,而且出问题还不一定能找到根源,c#出个问题要找还是比较快和简单的。
发表于 2020-11-25 11:13 | 显示全部楼层
虚幻以前要在Pentium 4处理器上跑的,我们以cpu-z跑分为例:
单核:P4 3.0G 66分,9700k 547分。
多核:P4 3.0G 129分,9700k 4138分。
(数值可能有出入,意会即可)
Unreal拿头用c# 做(当年的)AAA大作,根本跑不动好吗。
c#火爆是后来的事情,因为项目更多了,开发更复杂,需要参与的人也更多了。
c++用户太少,没得选。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-23 05:14 , Processed in 0.132334 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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