04月212014年

【王楠的回答(37票)】:

为什么入门简单,看一下官网的文档和视频教程就知道了,看完几段视频和例子就能让初学者做出能玩的东西,其他同类商业引擎都做不到。物体+组件的结构,所见即所得的编辑方式,都把初学者的门槛降到了最低。

再说说难精通的体现。其实任何可以拿来做高大上酷炫屌游戏的商业引擎都是难精通的,这个由引擎的功能深度和泛用性决定。一个集成了无数商业中间件的引擎,包括动画系统、GUI、光照系统、寻路、物理等各个部分,任何一部分单独拿出来都需要用户用心掌握。从这个角度来说Unity和Unreal基本是差不多的。

那么Unity特有的坑有哪些呢?

1. 脚本执行顺序:MonoBehavior是Unity组件系统的核心,离开这个类所有易上手和高效开发的特性都无法施展。但多个组件脚本的执行顺序控制始终是令人头痛的问题。不了解这一点的用户很容易陷入各种隐藏bug的泥沼。

2. 组件式功能结构给每个人更大的控制权力,但无法很好的区分团队不同成员的责任。相比Unreal把编程分为C++,UnrealScript和Kismet三层的做法,Unity让每个开发者都能看到脚本源码并在需要时进行修改。对于独狼开发者来说非常方便,但如果一个游戏逻辑同时可能受到脚本程序、prefab参数配置和场景引用关联三方制约,维护起来就非常的乱,出了问题也很难第一时间分清责任。

3. 内存分配和垃圾回收造成的效率问题初学者很难了解。Unity的一个重要特征就是为了让整个引擎有更广的受众,故意隐藏了很多复杂的使用方法。比如说全自动的垃圾回收,就是为了让不懂内存分配的用户也能无障碍使用。但很快进阶一点的用户就会发现大量运行时垃圾回收造成的拖慢,以至于成为一个入门必经的陷阱。如果能在官方文档里告诉用户哪些操作会分配内存,情况会改善许多。

4. 功能迭代推新迅速,造成大量不成熟不完善的工作流程。这一点很难说是缺点,毕竟能第一时间用到酷炫的新功能对很多用户来说是求之不得的,当然如果你是商业项目的技术负责人就要小心了。一般来说,官方推出的功能至少要在一年后稳定性和适用性才会超过Asset Store上的同类第三方插件。

总的说来,由于优秀的可扩展性,上述这些问题都不致命。总有人在制作优秀的工具来弥补这个引擎的各种不足。而配合其天下无敌的易用性,unity整体的技术方向是非常成功的。

【邓凯的回答(13票)】:

Unity入门易:

1、渲染对象上挂一个脚本组件就可以驱动该对象的逻辑,基于MonoBehaviour的脚本一上来就把初始化(Awake、Start),更新(Update、FixedUpdate)的接口留好了,初学者完全不用考虑程序框架一类的问题,直接填空就行。很像做早期flash游戏的感觉。

2、编辑器非常强大,所见即所得的编辑方式,可以随时暂停、单帧执行游戏逻辑,提供场景和游戏多个窗口实时调试,观察效果。脚本组件面板上可以实时看到所有变量的当前值,这对于调试游戏逻辑非常方便。

3、3D引擎功能很完善,与我们自研了5,6年的3D引擎相比,还是远远甩我们一大截,除了支持前向和后向的多种渲染管线,各种后渲染效果,还内置基于Beast的LightMap烘焙、基于Umbra的遮挡剔除这些商业中间件,要知道单采购这些中间件就得好几十万RMB,因此就算是个3D新手,要做个炫酷的3D效果也不是很难。虽然在渲染效果上可能比不上Unreal,Cry,但是U3D这玩意在中国,就算是免费的了,再说用U3D基本也是要发移动平台,目前的3D效果已经很够用。

4、游戏其他方面的组件也很丰富,有基于PhyX的物理系统,你要做点什么疯狂小鸟、割绳子之类的游戏,真是很容易。另外还有基于NavMesh的导航系统、音乐音效系统(做音效的是FMOD的前开发者)等。

5、良好的开发者社区生态系统。Unity最NB的就是建了个Asset Store,全世界的UNITY开发者在这里卖自己做的各种代码、组件、美术资源,分享经验。因此,学习成本大大降低。

6、一键发布到各种平台,包括IOS、Andriod、WP、网页、Windows、Mac等,如果不是要接入其他平台相关的库(如内购等),几乎完全不用学习平台相关的编程知识(Object-C, Java等)

7、作为证明Unity入门易的一个例子,本人在刚开始学Unity时,用了一个半月的业余时间,做了个推币小游戏,放在AppStore上,一个月基本上能收个几千块钱。给个链接吧,不算广告啊,只是说明下1个半月业余时间用Unity能做个什么样的出来:iTunes 的 App Store 中的“小丑马戏团”

--------------------------------------------------------------------------------------------------------------------------------

Unity精通难:

1、基于MonoBehaviour的脚本,用得太顺手会有有很大的架构风险,你会情不自禁的A组件引用B组件,B组件又引用A组件.....项目一大写成一团乱麻。当然用其他引擎,其他语言也有这问题,但UNITY的一些特性必须用MonoBehaviour类来使用,所以要设计一个健壮的MVC架构需要顶住很多诱惑,绕一些弯。

2、基于MonoBehaviour的脚本,组件的初始化顺序无法明确,这个坑也有回答提到了。

3、底层代码不开源,尤其是Asset Store上卖的东西那帮开发者也习惯弄个dll封装起来,因此,一些底层修改需求没法改,有时候很头疼。

4、C#的GC问题,这个不能说是Unity的错,C/C++的开发者会在长期的工作中变得对内存敏感,而C#开发者会弱得多,但游戏恰巧又是个内存敏感的应用程序。因此,开发者需要对C#的内存分配时刻非常敏感,否则就会出现频繁GC导致的顿卡现象。这里尤其要注意在每帧更新时的小内存分配。这方面要善用UNITY自带的内存和性能分析工具。

5、Unity3D毕竟是个3D引擎,3D图形学知识毕竟门槛很高,要深入的做一个项目,需要对3D知识了解得很深,因此,在开发一些大型项目时,新手往往对于3D的各种需求和问题,如果Unity官方没有,或者Asset Store里找不到,就感到棘手。

6、最大的坑!IOS发布时遇到跟AOT编译有关的运行时异常。简单说就是Unity采用mono对C#进行跨平台编译,但在iOS平台中,Mono是以Full AOT模式运行的,无法使用JIT引擎,于是引发了这个异常。所以经常出现的情况是在PC和Andriod上游戏都跑得很好,但在iOS平台会在运行时当掉!具体限制请参照:http://docs.xamarin.com/guides/ios/advanced_topics/limitations/#.NET.c2.a0API.c2.a0Limitations

7、作为证明Unity精通难的例子,我司跨时代炫酷国际大作秒杀Appstore前20的Unity项目,做了大概8个月了吧,估计要出来还得小1年....

【知乎用户的回答(2票)】:

入门易是因为它的编程脚本话(非常对象化),这个是核心。然后在这个核心之外,价格因素吸引了很多的开发者和公司。加上它的插件化技术形成了很好的生态环境,因此学习资料比其他引擎多了不止很多两个字就能说的清。这些都形成了入门的门槛很低。

精通难是因为3D本身,而不是unity这个工具。

转载于:https://www.cnblogs.com/lifesteven/p/4428866.html

游戏引擎 Unity 的入门易精通难体现在哪?为什么?相关推荐

  1. android手机游戏开发从入门到精通_unity3d游戏开发如何从入门到精通?

    对于游戏爱好者来说,unity3d想必大家都不陌生,unity3d和虚幻4算是现在最主流的游戏开发引擎,当然,Unity 3D 游戏开发引擎目前之所以炙手可热,与其完善的技术以及丰富的个性化功能密不可 ...

  2. 设计渲染系统,为什么要特别关注“显卡”? | GAMES104实录 - 现代游戏引擎:从入门到实践

    本期为GAMES104<现代游戏引擎:从入门到实践>视频公开课文字实录第11期.本课程由GAMES(图形学与混合现实研讨会)发起,游戏引擎技术专家王希携手游戏引擎一线开发者共同研发. 课程 ...

  3. 75页游戏引擎研报:3A较难推动国产inhouse引擎,东西方路径差异明显

    核心技术壁垒在于软件算法,商业投入左右选择 核心观点: <75页游戏引擎研报:3A较难推动国产inhouse引擎,东西发展路径差异明显>报告着重剖析如下问题:游戏引擎基础模块有哪些?商用引 ...

  4. 《GAMES104-现代游戏引擎:从入门到实践》-03 学习笔记

    目录 一个游戏世界由什么构成 如何描述一个Game Object 如何使游戏世界动起来 游戏世界中的Events 如何管理GO *Tick的时序问题 一个游戏世界由什么构成 一个游戏世界我们首先关注到 ...

  5. 《GAMES104-现代游戏引擎:从入门到实践》-01 学习笔记

    最近开始补GAMES104的课程,以此文章记录下自己在课程中的收获. 目录 前言 为什么学游戏引擎? 游戏引擎历史 早期游戏时代 游戏引擎之父和第一个游戏引擎的问世 现代游戏引擎 什么是游戏引擎 学习 ...

  6. 2018html游戏引擎,跨平台三维游戏引擎Unity Pro 2018.1 Win x64

    跨平台三维游戏引擎Unity Pro 2018.1 Win x64 Unity是由Unity Technologies开发的跨平台游戏引擎,主要用于开发三维和二维视频游戏和计算机.控制台和移动设备的模 ...

  7. 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程

    认识AndEngine什么是AndEngine 随着Android手机.平板的盛行,Android下的游戏也不断的变得火热.而对于游戏开发有兴趣的同学们,应该也想要学习开发游戏.虽说游戏开发的引擎较多 ...

  8. Android 2D游戏引擎AndEngine快速入门教程

    Android 2D游戏引擎AndEngine快速入门教程 介绍:AndEngine是一款知名的Android 2D游戏引擎.该引擎代码开源,并且可以免费使用.本书详细讲解如何使用AndEngine引 ...

  9. 《GAMES104-现代游戏引擎:从入门到实践》-04 学习笔记

    目录 <GAMES104>渲染系统课程大纲 渲染概述 游戏渲染面临的挑战 渲染流水线 着色 纹理采样(Texture Sampling) GPU的概念 SIMD and SIMT GPU ...

  10. 《GAMES104-现代游戏引擎:从入门到实践》-02 学习笔记

    目录 游戏引擎分层架构 工具层(Tool Layer) 功能层(Function Layer) 资源层(Resource Layer) 核心层(Core Layer) 平台层(Platform Lay ...

最新文章

  1. 吸引纠缠的双白矮星和迭代收敛的神经网络
  2. mariadb中文手册_MariaDB性能调优工具mytop的使用详解
  3. ab压力测试_Apache ab压力测试的知识点
  4. Apache Mesos:编写您自己的分布式框架
  5. 【codevs1228】苹果树,哦
  6. H3C查看系统启动配置文件
  7. mongoTemplate.aggregate() 聚合查询,关联查询
  8. 按键精灵上传账号到服务器_按键精灵云备份上传自己的脚本教程(图文)
  9. latex tabular 单元格里换行
  10. 利用DRONEKIT-SITL + MAVPROXY + QGroundControl模拟飞行
  11. 马尔科夫链(Markov Chain, MC)算法详解及Python实现
  12. python工业机器人_工业机器人编程语言汇总!
  13. 驳“法律信仰靠什么来生成?”
  14. 漫画:国内都有哪些程序员大牛?
  15. 卖旧手机时恢复出厂设置就能不泄露数据?微信官方辟谣了!
  16. Python趣味编程 | 看看如何用Python生成素描风格的自拍照,并且加上Logo
  17. matlab求矩阵特征值和特征向量、行列式
  18. 视频号扩展链接一键转换
  19. Jenkins 添加Allure报告 并发送企业微信通知
  20. 0x0000 CUDA安装

热门文章

  1. 如何用3dmax画OpenGL的5大坐标系
  2. 腾创秒会达视频会议系统软件 安卓
  3. Windows Server 2016域控服务器如何取消密码复杂性规则
  4. win7的计算机策略组,win7组策略如何打开以及如何禁用组策略
  5. forEach 终止循环
  6. oeasy教您玩转vim - 52 - # 正则查找
  7. nack fec心得
  8. 《沉默的真 相》的舆情分析及文本挖掘(二)——以原著小说,京东商品为例
  9. matlab的方法定义变量,Matlab定义变量怎么操作?定义变量方法介绍
  10. 量化交易简要入门(一)