2015-01-20 21:25:11 book_longssl 阅读数 1951
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12826 人正在学习 去看看 宋晓波


        不论是从官方手册,还是各种第三方教程,几乎涉及到的,都是讲如何使用,以及优点。


        虽然我是用的一个让步语气,但请不要否认的这些优点,它们的确存在。 但对于一个引擎的特性来说,优点与缺点总是共存的。


        你可以从网上了解到所有优点,但是,你很难真正体会到的缺点,除非你自己被坑过。 今天,我就来细数一下的缺点。 这些缺点,仅针对大中型项目。 小型项目,的优点可以充分利用。

 

一、环境


        的环境可以说是非常OK的。一体式的感受,让所有工作都无缝地进行。 真要说它有什么缺点,还很难找到。 但有几个地方,不得不说。


1、  默认不支持多项目,每次打开场景,则会关掉当前场景,再打开下一个场景。 而双击的启动图标,又会自动打开最近一个项目。 想要解决这个也还好办  在快捷方式后面加上 --project即可。 加上后,每次编译时会有一个提示,这个无关紧要。


        再试试双击的快捷方式,是不是会让你选择项目啦。

 

2、   多个版本不易共存,网上也有人提供了解决方案。但是,这始终不是太爽的一件事。


3、   编辑器未和执行环境分离,若要DEBUG,必须启动U3D编辑器。 而很多时候,对于程序员来说,是不需要的。 它们只是想改改代码,然后编译,执行。 或许,U3D可以通过命令行提供一个较轻量的启动环境。


4、   如果代码中出现了死循环,那就只有强行结束,然后再开。 中间如果忘了保存,那刚刚做的场景编辑工作,就洗白了。

 

二、开销


        基于Mono的运行环境,导致引擎起步价就比别人高。初始化时间过长。 这对于中高端机来说,是感觉不到的。但低端机,相比之下,就显得尴尬了。 而这一情况,对3D的影响还好。但对于一个小型的2D游戏来说,就会被人误认为,游戏做得不够好。


         U3D虽然提供了原生的2D支持,但是其本质仅仅是在运行期锁定了相机,集成了BOX2D物理和2D碰撞生成器等东西。 运行时期的起步价开销,与3D是等同的。

 

三、代码驱动的开发模式


         不管是官方示例,还是一些入门教程,都是以代码驱动的方式来引导大家熟悉。 当然,代码驱动方式也确实很方便,同时更能章显的强大。


         对于一个小项目来说,代码驱动无疑是最便捷的操作方式。


         但是,对于一个大型项目来说,代码驱动的结果则是BUG频繁,且很难逐一解决。 同时,对策划要求较高,策划需要知道不同对象应该挂什么样的脚本。 而对于代码驱动的开发方式来说,编码的人,最好就是策划。为不同的对象,使用脚本定制特定的功能。


         因此,使用U3D做大型项目的话,还是得需要退回到经典的数据驱动模式。 数据驱动模式则正好没有代码驱动模式面临的问题。同时,数据驱动才能更好地做出网络游戏。


         关于这个问题,我想等有时间了,专门弄一篇文章,向大家表达一下我心中所想。


         在这里,简单地提一下脚本挂接需要注意的地方

 

         U3D的组件思路是要一直沿用的,如果脚本不挂在对象上,那就失去了这个NB的特性,现在,我们要决定怎么样挂。我的思路是,对于一个对象来说,如果是对其能力进行扩展的,那就可以将这样的特性挂在对象身上。 反之,如果是决定游戏流程的,那这就应该是普普通通的代码,不能挂到对象身上。


        下面,举一个简单的例子。  玩家走到一个触发器上,触发器触发,然后,玩家移到新地图。


        首先,触发器本身是一个对象,它会检测是否有对象进入它,如果对象 玩家,那将会被传送。


        对于一个普通的gameobject来说,是没有检查对象进入和触发能力的。 那,我们可以将它的COLLIDER弄成TRIGGER。 但是,一个对象的RIGGER触发的检测,只能是在挂在它的对象脚本里做。


        按我们上面说的原则,那当脚本里检查触发后,我们就不能直接操作玩家。 而是应该将这个事件抛出,由逻辑来处理。


        于是,我们可以写一个事件类,这个事件类负责管理所有事件,然后感兴趣的对象,可以来对里面的事件进行接收和处理。


        我们还需要一个TrigerDetector来做所有触发器的挂接。 剩下的事情,就是真正的游戏逻辑来做了。 

 

        上面是单机的情况,那网络的情况,又怎么做呢。 这就是数据驱动的魅力了。


        对于这个触发器,我们可以挂接一个teleport的脚本,这个脚本什么功能都没有,只有一些变量,如目标地图ID等。另外,我们还需要将这个对象标记为SERVER对象。


        然后,我们需要扩展编辑器,将场景导出。标记为SERVER对象的,则导出到SERVER使用的数据文件,没有标记为SERVER的,则导出到客户端的数据文件里。


然后,前后两端进行加载和操作。至于如何导出,下面有简单说明。

 

四、所见即所得


        咦,这不明明是优点么。为毛又成缺点了。


        其实,这确实是优点,而缺点其实不是因为它,而是因为U3D采用二进制存储场景文件。那多人协作的时候,SVN冲突可是一桩接着一桩的。 


        解决这个的办法也挺简单,我们扩展一下编辑器,将对象导出成非二进制格式不就成了么。然后再在游戏里面,重新加载。


        思路是这样,要实现这个中细节,其实也挺麻烦的。我们公司的编辑器虽然功能不多,界面不美,但是却优雅地解决了这个问题。


        这套方案也不是一两句话能说清楚。 总之,记住,这里是个坑。


        既然提到这里了,如果不说点具体解决办法,可能有人说我是装B了。 那我说一个能够一定程度上解决冲突的办法。


1、   场景中所有对象,使用prefab。 不能有非prefab出现,且不能修改prefab的任何属性


         不能修改属性的原因是为了保存的时候简单,如果大家属性都一样的话,那我们只需要存它的缩放,旋转,平移以及对应的prefab名字就可以了。 遇上需要不同属性的东西,那新建一个PREFAB


2、    扩展一个编辑器功能,将场景导出为XML或者JSON什么的文本格式


         这个文本格式,保存了所有的对象信息,每个对象信息包含缩放,旋转,平移以及对应的prefab名字。 当然,这不是死的,如果有其它需求,可自行添加。比如,对象的初始active状态.


3、    新建一个真正的场景,里面只有一个GameObject对象,这个对象只挂接了一个脚本,这个脚本的初始化,就是调用游戏逻辑的初始化,这个脚本的UPDATE,就是调用逻辑的UPDATE。


         这其实就是一个MAIN入口。 你的游戏逻辑应该是与具体场景无关的。 你只需要加载你先前导出的文件,然后对所有对象进行实例化即可。

 

         这个是解决SVN冲突的第一步,同时也是数据驱动实现的第一步。

 

 

         关于游戏的增量更新之类的坑,并不是U3D特有的,通常只有两个解决方案,一个是数据和代码分离,以减少更新压力。 另一个是纯脚本,实现所有功能,包括资源的加载什么的。 不管采用何种方案来应对这个问题,数据驱动是必然的。


         这也是我入手U3D的原因,因为通过编辑器扩展,我找到了数据驱动的解决办法。

 

         其实,最想说的两个问题都说了,一是数据驱动,二是SVN冲突解决。但U3D肯定不只这些坑。 但那些坑,都是很具体的,通过具体需求才能解决的。


        上面讲到的,是所有项目都适合的坑。希望对大家有帮助.

2016-01-12 16:35:22 u014427391 阅读数 607
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12826 人正在学习 去看看 宋晓波

Unity3D是一款很不错的游戏引擎,主要开发语言是C#、JavaScript,当然还有Boo,然后给我Unity3D的官网Url: Unity3D官网    。

Unity3D最大的优点就是高度的跨平台性能。也就是说你做出一款游戏之后就可以在很多平台运行。

下面是我网上找到的很不错的学习链接:

1. Unity3D 游戏引擎之构建游戏框架与导出IOS项目(一)
http://www.devdiv.com/Unity3D_%E ... log-31865-8995.html
2. Unity3D 游戏引擎之实现平面多点触摸(二)
http://www.devdiv.com/Unity3D_%E ... log-31865-8996.html
3. Unity3D 游戏引擎之构建简单的游戏世界(三)
http://www.devdiv.com/Unity3D_%E ... log-31865-8997.html
4. Unity3D 游戏引擎之构建3D游戏世界的基本地形(四)
http://www.devdiv.com/Unity3D_%E ... log-31865-8998.html
5. Unity3D 游戏引擎之构建游戏地形的基本元素(五)
http://www.devdiv.com/Unity3D_%E ... log-31865-8999.html
6. Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9000.html
7. Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9001.html
8. Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放(八)
http://www.devdiv.com/Unity3D_%E ... log-31865-9002.html
9. Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收(九)
http://www.devdiv.com/Unity3D_%E ... log-31865-9003.html
10. Unity3D 游戏引擎之Unity3D回馈IOS高级界面消息 (十)
http://www.devdiv.com/Unity3D_%E ... log-31865-9004.html
11. Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动(十一)
http://www.devdiv.com/Unity3D_%E ... log-31865-9005.html
12. Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
http://www.devdiv.com/Unity3D_%E ... log-31865-9006.html
13. Unity3D 游戏引擎之平面小球重力感应详解(十三)
http://www.devdiv.com/Unity3D_%E ... log-31865-9007.html
14. Unity3D 游戏引擎之游戏场景的切换与持久化简单数据的储存(十四)
http://www.devdiv.com/Unity3D_%E ... log-31865-9008.html
15. Unity3D 游戏引擎之详解游戏开发音频的播放(十五)
http://www.devdiv.com/Unity3D_%E ... log-31865-9009.html
16. Unity3D 游戏引擎之感应IOS设备旋转与iPhone键盘事件(十六)
http://www.devdiv.com/Unity3D_%E ... log-31865-9010.html
17. Unity3D 游戏引擎之游戏对象的访问绘制线与绘制面详解(十七)
http://www.devdiv.com/Unity3D_%E ... log-31865-9011.html
18. Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9012.html
19. Unity3D研究院之与Android相互传递消息(十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9013.html
20. Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9021.html
21. Unity3D研究院之2D游戏开发制作原理(二十一)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9026.html
22. Unity3D研究院之角色控制器组件研究(二十二)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9027.html
23. Unity3D研究院之使用C#语言建立本地数据库(二十三)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9028.html
24. Unity3D研究院之鼠标控制角色移动与奔跑示例(二十四)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9029.html
25. Unity3D研究院之两种方式播放游戏视频(二十五)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9030.html
26. Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9031.html
27. Unity3D研究院之IOS Android支持中文与本地文件的读取写入(二十七)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9032.html
28. Unity3D研究院之Android NDK编译C/C++结合Unity实现本地数据共享(二十八)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9033.html
29. Unity3D研究院之第一人称第三人称角色控制组件修改C#版本(二十九)
http://www.devdiv.com/Unity3D%E7 ... log-31865-9034.html


2019-02-18 18:18:30 weixin_44499693 阅读数 2143
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12826 人正在学习 去看看 宋晓波

好,虽然写过了前言,但我还是有许多话想说却忘记了说,那就是我们的教程的相关事项。
很感谢看过我博文的朋友,虽然是第一次在csdn写博文还真的有人看,我还是蛮欣慰的,以前在新浪
时人们还是关注娱乐消息,技术博文几乎没有人看,不过来到这里我还是很有压力毕竟都是各界大牛
如果小的有什么地方写得不好还请指出。

我的博文会教给大家U3D从入门到精通全部教程,当然如果一些博文已经有人写过好多了的话我就不会
重复,面向的应该是有意向或刚开始学习的朋友。

既然这篇不是前言,那么我还是要写一些东西的

Unity的安装你们还需要学吗?我写一份安装教程好了。这里只对个版本unity做简要介绍,unity我写博文的
时候已经出到了2019版本,高版本的unity可以打开低版本unity工程及packet文件,但高版本的文件无法由低版本打开,但还是不推荐跨版本使用unity开发因为会出现各种各样你想的到想不到的错误。

我还是真的遇到过 这类的bug。。。

来来来上教程

Unity3D的安装方法

很多人写过了吧,就连百度经验也许都有,那我也写一次吧

访问https://unity3d.com/
unity官网
选择 Get Started
商店界面
按照你的需求下载你所需要的版本,其实差别也不是很大
我推荐下载个人版因为免费你只需要注册一个账号即可

那就单击 Try Personal
下载
把小钩子钩上,他会告诉你你需要启动资金低于多少多少,年收入低于多少多少
全篇废话不管他
单机Download。。。。下载
然后打开安装包跟进下载即可,我现在并不建议您勾选除unity和vs以外的软件下载,
保持默认即可,以后有用到可以打开安装包进行下载。

一般安装需要半个小时,您可以先刷刷B站

我是Windy,专注技术,您有什么疑问可以加我qq:3300855273
平时学业繁忙,若有怠慢请多关照

2017-11-14 00:00:00 JtNbCOC8N2I9 阅读数 13371
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12826 人正在学习 去看看 宋晓波


unity3D是如今绝大多数游戏开发团队的首 选3D引擎,并且它在2D上的表现也及为优秀。它可以轻松解决很多其它引擎不能解决的问题,此外还有很多出众的地方,这都是现在越来越多的人选择unity3d游戏开发的原因,下面就让我们来看一下这些优点所在吧!


1可定制的IDE环境


U3D这种ALL IN ONE的设计思路,我在一个叫神咒的代码中见到过,集所有编辑器于一身。虽然神咒的编辑器不能自由扩展,但由于是公司内部的引擎,所以它的使用也很方便。比如,在场景中突然想要对一个模型的材质进行编辑,则选中此模型,右键,弹出材质编辑器即可。


组件式思路,将这种关系变得更加紧密。你都感觉不到自己在使用一个材质编辑器,你会觉得自己是在操作这个模型本身,它的材质,它的碰撞器,它的对象结构等等。而一个好的引擎,必定得先有一个功能完备的编辑器。


2基于Mono的开发脚本


C/C++无疑是图形界的宠儿,也没有人想过用另一种语言来替 代它。即使是U3D,亦是如此。但早期使用C/C++编写的引擎,都理所当然地使用C/C++来作为上层逻辑的开发。


又有一些,采用了纯脚本的模式,比如Python、LUA。脚本的好处在于更低的编码成本,而大家熟知的虚幻引擎以及有一个名不见经转的Torque,则自己整了一套开发语言。我想,它们的目的就是为了使大家能够以一种更安全的方式来编程, C++一不小心,则会带来内存和效率问题。


它的使用成本,人员成本其实是高于其它语言的,而Mono C#JS,BOO的出现,则又一次让大家眼睛一亮。Mono的桥接,使得高效的C++图形引擎与带GC的内存安全语言进行结合。不仅减少了安全隐患,也使得大家编写跨平台代码时更佳容易。


3基于组件的对象系统


这是一个我最喜欢的系统,我也使用irrlicht引擎山寨过,山寨的过程中,几乎看完了它的组件参考手册,使我对unity3d游戏开发引擎的组件系统又有了新的认识。 同时,目前公司自主研发的引擎,也是这样的思想。不管我是在工作中,还是业余捣鼓都受组件系统的影响,慢慢的喜欢上了这种对象模式。


4所见即所得


这可以说是许多人最喜欢的特性,这也是G3D群里,问的人最多的特性,三天两头就有人问,G3D能不能像U3D一样在编辑器里预览游戏效果呀。


U3D除了编辑后立即运行,还能在运行过程中时实编辑,查看效果。当然,运行过程中编辑对象的数据,会在停止后失效。(注意,对文件属性的修改,不会失效)


5代码驱动的开发模式


这种模式,可以使我们快速地构建一个原型。


6多平台发布


unity3d游戏开发支持的平台,无疑是当下较为流行的平台。满足绝大部分项目需求。早期的引擎,多以PC和CONSOLE为主。支持INDOWS,XBOX,PS2已经是很不错了。U3D便利的多平台发布特性,也使得它成为了当前性价比最 高的引擎的原因之一。


7良好的生态圈


AssetStore的出现,不仅使U3D的生态圈更加稳固,同时也提供了许多机会。 你可以制作插件放网上卖,赚取一些利益,也可以购买别人的插件,作为使用或者参考也好。有时候,购买一些插件,可以让你快速脱离当前的困境。 一个是解决进度问题,一个是解决思路问题,这是之前其它引擎不具备的。

AI先锋

ID:EnlightAI

关注人工智能行业发展,介绍人工智能技术与产品

2015-01-19 22:27:17 book_longssl 阅读数 683
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12826 人正在学习 去看看 宋晓波

 09年还在和其它小伙伴开发引擎的时候,Unity3D就初露头角。 当时就对这种基于组件式的设计结构很不理解。 觉得拆分过于细致,同时影响效率。


      而时至今日,UNITY3D已经成为了众多团队的首选3D引擎。 并且,随着Unity3D 4.3的发布,原生的2D支持也让人大开眼界。虽然Unity3d的原生2D功能还有很长的路要走,但也阻挡不了它称霸当下。


      2011年中,公司的引擎项目停止之后,我的目光便转到了U3D的身上,经过几番挣扎后,终于对基于组件式的对象模型有了新的认识。 而如今,这种模式,成为了我最推崇的模式。 因为它能解决我在设计引擎对象时的纠结。 而这些纠结,是我在先前的引擎开发中,一直不能优雅地解决的。


      首先,我们来说说U3D的好处。可能总结得不够完善,如果有不足的地方,就表示我自己没有体验到.


一、可定制的IDE环境


      U3D这种ALL IN ONE的设计思路,我在一个叫神咒的代码中见到过。 集所有编辑器于一身。 虽然神咒的编辑器不能自由扩展,但由于是公司内部的引擎,所以,它的使用,也很方便。 比如,在场景中突然想要对一个模型的材质进行编辑,则选中此模型,右键,弹出材质编辑器即可。  U3D的组件式思路,将这种关系变得更加紧密。 你都感觉不到自己在使用一个材质编辑器。 你会觉得,你是在操作这个模型本身。 它的材质,它的碰撞器,它的对象结构等等。


      回想一开始进入游戏行业的时候,天天啃着代码。 当时觉得代码就是一切,各种认为很牛X的代码,都忍不住读上一番。 而随着时间的推移,特别是经过项目的洗礼后。 突然发现编辑器是多么的重要。 就我做的第一个页游来说,起手前两个星期,我们就做了动画编辑器,场景编辑器。而最终证明,因为这两个简陋的编辑器,使我们后面的工作变得更加容易。


      因此,一个好的引擎,必定得先有一个功能完备的编辑器。


二、基于Mono的开发脚本


      C/C++无疑是图形界的宠儿,也没有人想过用另一种语言来替代它。即使是U3D,亦是如此。 但是,早期使用C/C++编写的引擎,都理所当然地使用C/C++来作为上层逻辑的开发。 又有一些,采用了纯脚本的模式。比如Python,LUA。 脚本的好处在于更低的编码成本(经过仔细研究,我发现,这是由于写脚本语言的心态和写C++的心态导致的。 写C++的时候,总是想着代码的复用度,而在脚本的时候,很多时间会认为,这个脚本,就是为这个对象服务的,那我就按照策划需求来写就可以了。 我想,这也是许多时候,脚本语言存在的意义。特别是早期引擎中,使用脚本来处理一些关键的事件响应)。  而大家熟知的虚幻引擎以及有一个名不见经转的Torque,则自己整了一套开发语言。 我想,它们的目的,就是为了使大家能够以一种更安全的方式来编程, C++一不小心,则会带来内存和效率问题。 它的使用成本,人员成本其实是高于其它语言的。 Mono C# JS,BOO的出现,再一次让大家的眼睛一亮,原来,引擎可以这样整。


      Mono的桥接,使得高效的C++图形引擎与带GC的内存安全语言进行结合。不仅减少了安全隐患,也使得大家编写跨平台代码时更佳容易。 同时,这类语言的反射机制,更适合做编辑器。而比起先前的一些DIY语言和像LUA这样的小巧型语言,Mono使脚本编程可以进行DEBUG,而不单纯的靠PRINT输出。


      这里就顺带说一下三个语言的区别


      C# 这是我见过的大型项目中使用得最多的语言,也是我比较喜欢的语言。 因为它和C++很像,同时严格的类型和语法检查。


      JS 在帮一些朋友做小东西的时候,使用过这个语言,由于mono自带的提示功能,写起来还是挺顺手。 但总给我一种摸不着头脑的感觉。 并且U3D给的JS,不是严格的JS,有些语法不支持,而有些语法又很特别。


      BOO 完全没有使用过,貌似也很少有人使用。


三、基于组件的对象系统

      这是一个我最喜欢的系统,我也使用irrlicht引擎山寨过,山寨的过程中,几乎看完了它的组件参考手册,使我对U3D引擎的组件系统又有了新的认识。 同时,目前公司自主研发的引擎,也是这样的思想。 不管我是在工作中,还是业余捣鼓都受组件系统的影响。 慢慢的,喜欢上了这种对象模式。


      之前在做一个RTS游戏项目的时候,参考了著名开源项目 0.A.D的代码。 当时只是为了去寻找LOS和多单位协同寻路的方案。 但在参考其代码的时候,发现了它整个系统,都是基于组件式的。又一次,对组件式有了好感。 而经过仔细思索后。 回到了我一直坚持的子系统划分法的游戏框架。 当我不禁感叹,原来,自己也一直是在组件式。 只不过,我的组件式,是MANAGER方式,MANANGER内部进行对应的实体管理、。 比如,背包系统,则只负责玩家背包数据,背包使用,背包相关的功能。 不管是数据存储,还是与前端通信,都是背包系统自己在负责,其它模块完全不需要干涉。  而U3D中的组件系统,则将这个粒度划得更仔细了……。  这对于早期的像OGRE的entity系统。仅仅是认为对象可以由子对象构成,可以说是一个质的变化。


      早期的引擎,基本上都是继承优先的设计方案,更多时候考虑的是编码的便利性,且引擎的走向都具有针对性。 而当面对一些复杂情况的时候,继承式的编码是十分麻烦的。 并且,对于JAVA,C#这样的语言,并没有提供多继承能力。 因此,继承式的编程,在面对越来越广泛的游戏需求的时候。显得无能为力。 组件式则是一种聚合优先的编码方式,它的复用度和伸缩度,都远远大于继承。 唯一让一些C++程序员觉得不太顺眼的,可能就是过多的变量和虚函数调用开销吧。 但这些,在当下来说,都不是问题。 影响大众步伐的,早已不是那种语言特性本身导致的开销。更多的,是如何使我们高效率,高质量地完成一个游戏。 因此组件模式已经成为必然。 从新版的UE4的变革,以及畅游的G3D,国外一个开源的godot引擎,就可以看出来,大家对组件模式,已经有了深深的好感和接受度。


四、所见即所得


      这可以说是许多人最喜欢的特性,这也是G3D群里,问的人最多的特性,三天两头就有人问,G3D能不能像U3D一样在编辑器里预览游戏效果呀。

      U3D除了编辑后立即运行,还能在运行过程中时实编辑,查看效果。当然,运行过程中编辑对象的数据,会在停止后失效。(注意,对文件属性的修改,不会失效)


五、代码驱动的开发模式


      这种模式,可以使我们快速地构建一个原型。 对于U3D中的MonoBehaviour来说,它扮演的,就是如何驱动它的目标对象。 因此,你可以将你的对象的各种能力分配到不同的脚本组件中,然后根据对象的需求来挂接。



六、多平台发布


      U3D支持的平台,无疑是当下较为流行的平台。 满足绝大部分项目需求。 早期的引擎,多以PC和CONSOLE为主。 支持WINDOWS,XBOX,PS2已经是很不错了。 U3D便利的多平台发布特性,也使得它成为了当前性价比最高的引擎的原因之一。


      也有许多公司正在自主研发引擎,或者是将先前的PC引擎修改为多平台(IOS+ANDROID居多)。 但这也档不了U3D的步伐。


七、良好的生态圈


      在使用公司引擎的时候,我就发现,若我遇上一个问题,只能问公司的老员工们,或者找其它引擎TEAM寻求帮助。而U3D这种生态圈,不是一天两天能形成的。GOOGLE,百度,各种论坛,都能很容易找到自己想要解决的问题。 而对于一些经验上的问题,也有不少人总结。 这使得后来者,可以快速上手引擎。


      而AssetStore的出现,不仅使U3D的生态圈更加稳固,同时也提供了许多机会。 你可以制作插件放网上卖,赚取一些利益,也可以购买别人的插件,作为使用或者参考也好。 有时候,购买一些插件,可以让你快速脱离当前的困境。 一个是解决进度问题,一个是解决思路问题。 这是之前其它引擎不具备的。

Unity 3D - MipMap

阅读数 1670

没有更多推荐了,返回首页