漫话Unity3D(一)
前言
使用Unity已经有将近半年时间了,尽管项目还仅仅是个半成品,可是Unity差点儿相同玩熟了。这里把使用过程中碰到的问题梳理一遍。不会涉及到太过详细的功能和代码,可是假设开发一个网游又都会涉及到这些知识点,而这样的直击“本质”的“答案”是非常多教学书籍所不具备的。
一、背景介绍:什么是Unity
2013年手游如火如荼,开发了端游页游之外的第三战场。而随着手游品质的逐渐提高(越来越多的大公司開始介入手游领域,手游不管从画面还是内容都直逼端游),Unity開始为越来越多的人所熟悉和认可。 而越来也多的使用Unity开发的游戏创造了收入传奇,Unity 的身价也不断提高。就像Cocos2d-x一样,既是Cocos2d-x成就了大批畅销游戏,也是畅销游戏成就了Cocos2d-x,这是双赢。
Unity是一个3D游戏引擎。在几年之前,人们提到3D游戏引擎基本上是三个阵营:
第一阵营以Unreal、CryEngine、BigWorld为代表,是最高端的商业游戏引擎,特征是高品质、高授权费和高门槛,这样的游戏引擎一般人买不起,买了(或者是下载了破解版本号)也不会用。网上的教程少之又少,除非你在买了这样的游戏引擎的公司,跟着牛x的主程学习一段时间,否则入门都是一件很困难的事情,更不要说玩转它用来做游戏了。
第二阵营是以Ogre、Irrlicht为代表的开源3D引擎。特征是免费、开源、良莠不齐。他们是免费的,这意味着能够省掉相当大一部分投资,他们是开源的,这意味着你哪里看着不爽就能够直接改。开源3D引擎中Ogre应该算是最出名的,由于造就了搜狐畅游的天龙八部。可是不得不说,开源游戏引擎的地位相当尴尬。能够这么说假设你是武林高手的话,那么草木皆可为剑,仅仅要你足够牛x,那么哪个开源引擎你都能够拿来做一个相同牛x的游戏,可是假设你不够牛,或者你的公司里没有足够牛的人(这在创业团队里并不少见),那么还是不要想着拿它们来做游戏了,甚至不要想着做3D游戏。
第三阵营是个大公司自主研发的游戏引擎。游戏引擎决定了游戏公司的生产方式。大公司有钱有时间,能够花费大量的时间和金钱来等待一个必定失败的结果。小公司和创业团队不要想着凑热闹了。
Unity是不同于上面三个阵营的独立阵营。它具备商业引擎的品质,可是授权费相当低廉,个人都能够买的起,更不要说公司了(并且网上还有大把破解资源,你甚至在赚到足够多的钱之前都不须要购买)。它的入门门槛非常低,常常有新闻说8岁的孩子拿这个引擎来写了一个游戏,还赚了不少钱,尽管是噱头,可是也能够说明一些问题。 网上教程和书籍都有非常多,能够非常方便的获取到学习资料。 Unity还创新的创建了Assets Store(资源商店),你能够花费非常廉价的价格(相对国外收入来说,动不动100美元的价格对国人来说还是贵了些,假设DF
GUI的价格是90人民币,那我肯定购买,可是90美元我就望而却步了),购买到丰富的插件和资源(比方GUI插件、AI插件、特效集合、动画、模型等等)。
二、引擎的争论,为什么要选择Unity
常常看到有人问我该用Cocos2d-x还是Unity?或者我该学习Cocosd-x还是Unity? 这些问题并没有一个统一的答案,而我有我自己的看法。
诚然,关于引擎的争论是幼稚而可笑的。牛x 的人用什么引擎都能够做出好游戏,菜鸟用什么引擎都仅仅能写个“Hello world”。可是游戏引擎决定了部门的生成方式,决定了资源和创意的限制,决定开发语言的选择,决定了后面要招什么样的人,它决定了太多的东西,所以一些思考还是很有必要的。我一直有这种看法,游戏开发的方向走对了,即便一開始走的慢些,可是会越走越快,而且能够避免走弯路、走死路。
2012年初,我第一个公司(网龙)的MMO RPG游戏《征服》就移植到iPad版本号,这得力于公司牛b的引擎开发者,他们在非常短的时间内就把C3引擎移植到iOS、android甚至是WP8、html5、flash上了。那个时候就算联网的手游都非常少见,更不要说mmo了。尽管收入还惬意,可是没有大红大紫。手机版本号和中文版本号一直没有放出来。2012年底的时候,我到了第二家公司(天盟),进来没多久我就跟总监说,我们能够把公司的3D MMO移植到手机和平板上面,不会花非常多人力,无论能不能赚钱,我们就算赚吆喝也不亏,把手游mmo
rpg的市场先给占了。可是得到的答复是,我们引擎不支持手机,3D MMO对手机性能要求太高,所以这个不是当下须要考虑的。2014年的今天,mmo rpg和arpg如火如荼......
回过头来再说方向的选择,举个样例,假设一開始选择的是Unity,那么就不会碰到移植的困难。假设一開始开发语言选择的是lua,那么你要招募一个合格的小弟要easy非常多。我们写c++写的熟悉了,感觉哪个语言都差点儿相同,甚至lua由于没有编译报错,反而会碰到非常多不爽的问题。可是不得不说,c++须要注意的细节非常多,写好一个lua 的逻辑要比写好相同的c++逻辑easy太多了。
对于初出茅庐的人来说,应该学习哪个游戏引擎能够更好的找到工作?我个人的观点是学习cocos2d-x,由于如今大多数国内公司还是使用cocos2d-x来开发2d或者2.5d游戏。Unity3D是着眼于不久的将来。 第二个原因是,相比于Unity,cocos2d-x实在是太简单的,学习cocos2d-x你能够更加easy的了解到什么是游戏引擎,游戏引擎在做什么,这样的学习提高是大大优于Unity中的托托拽拽的。
开发游戏跟学习游戏引擎又有点不太一样。如今通常的观点是,开发2D游戏使用cocos2d-x+lua的方式,开发3D游戏使用Unity。大多数情况下,这么说是合理的。这两种组合都有非常多的成功案例。我如今已经熟悉Unity了,而且我想做的游戏是一个3D ARPG,那么毫无疑问我会使用Unity来开发。这个时候即便公司突然说要开发一个2D游戏,我也会使用Unity,由于Unity有非常多专业水准的2d插件,它的资源管理和编辑器功能无比强大。
(第一部分结束了,废话超乎想象的多。之所以在这里结束第一部分是由于第一部分有太多“口水”的东西,尽管我个人挺喜欢看这样的八卦的东西,可是不得不说,缺少料啊,好了第二部分,猛料来了)
漫话Unity3D(一)的更多相关文章
- 漫话Unity3D(三)
八.预制(Prefab) 这个单独提出来,是由于它太经常使用了.也是Unity 的核心要素之中的一个.原本Unity中的一个物体是你拖拽一个模型到场景中,或者创建一个几何体,或者灯光地形等,然后设置这 ...
- Unity3d学习 预设体(prefab)的一些理解
之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...
- Unity3d入门 - 关于unity工具的熟悉
上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...
- TDD在Unity3D游戏项目开发中的实践
0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...
- warensoft unity3d 更新说明
warensoft unity3d 组件的Alpha版本已经发布了将近一年,很多网友发送了改进的Email,感谢大家的支持. Warensoft Unity3D组件将继续更新,将改进的功能如下: 1. ...
- Unity3D框架插件uFrame实践记录(一)
1.概览 uFrame是提供给Unity3D开发者使用的一个框架插件,它本身模仿了MVVM这种架构模式(事实上并不包含Model部分,且多出了Controller部分).因为用于Unity3D,所以它 ...
- Unity3D 5.3 新版AssetBundle使用方案及策略
1.概览 Unity3D 5.0版本之后的AssetBundle机制和之前的4.x版本已经发生了很大的变化,一些曾经常用的流程已经不再使用,甚至一些老的API已经被新的API所取代. 因此,本文的主要 ...
- 山寨Unity3D?搜狐畅游的免费开源游戏引擎Genesis-3D
在CSDN上看到了<搜狐畅游发布3D游戏引擎Genesis-3D 基于MIT协议开源>(http://www.csdn.net/article/2013-11-21/2817585-cha ...
- 从Unity3D编译器升级聊起Mono
接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识. Unity3D的编译器升级 新升级的Mono C#编译器(对应Mono 4.4) Unity编辑器及播放器所使用的M ...
随机推荐
- Hibernate项目里配置环境时,jar包配置不当会对测试结果产生影响。
问题情况: 如下图所示,该图中,显示了一堆错误的jar包.这是导致了Junit4测试通过了,数据库却没反应的原因. 原因: 之所以出现这种情况,eclipse其实已经告诉了我们原因.如下图所示,这些j ...
- Solr集成IK中文分词器
1.将IKAnalyzer-2012-4x.jar拷贝到example\solr-webapp\webapp\WEB-INF\lib下: 2.在schema.xml文件中添加fieldType: &l ...
- 自定义View-6 状态按钮 滑动 点击
View public class SwitchButton extends View implements OnClickListener, OnTouchListener { privat ...
- BFC——块级格式上下文
BFC中的B指的是block,对应的还有IFC,I指的是inline.对于BFC的理解可以参考层叠上下文.页面中,盒子的排布规则,是生效在对应的BFC中.两个BFC中的布局互不影响.页面的本身的根本身 ...
- [C#]asp.net开发微信公众平台----目录汇总-持续更新
1.[c#]asp.net微信公众平台开发(1)数据库设计 2.[c#]asp.net微信公众平台开发(2)多层架构框架搭建和入口实现 3.[c#]asp.net微信公众平台开发(3)微信消息封装及反 ...
- 如何让MyEclispe中英文切换
我们通过网上的一些汉化办法汉化了我们的MyEclipse,可是我们有时候想切回英文版怎么办? 方法一:我们可以通过修改MyEclipse配置文件的办法来从中文恢复到英文, -Duser.languag ...
- iOS调节系统音量
目录[-] 使用MPVolumeView 编程实现系统音量调节2 通过MPVolumeSlider的实例来操作系统音量 有问题!我不喜欢系统弹出音量提示 还有问题,我修改了系统音量但是不是通过我的UI ...
- myeclipseb笔记(4):拷贝文件的相应配置
在MyEclipse中,经常需要用到拷贝工程文件,但是直接拷贝的话,就会出现访问不了的情况,如下: 原文件learn/StudManage/login.jsp,访问: 拷贝工程,改名,访问: 就出现了 ...
- linux下安装eclipse
最开始的版本OpenSuse + jre-7u25-linux-i586.tar.gz + eclipse-cpp-kepler-R-linux-gtk.tar.gz 配置好java环境后启动ecli ...
- 关于js事件冒泡和时间捕获
(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div ...