如何快速熟练unity api解析

专访张路斌:从HTML5到Unity的游戏开发之路
发表于 08:24|
作者单明珠
摘要:社区之星52期采访了非计算机专业出身、热爱游戏的张路斌,为了离梦想近一些,毕业后前往日本,选择在游戏行业发展。在这段时间里,他在CSDN博客里撰写了几十篇技术文章,并著有《HTML5 Canvas游戏开发实战》一书。
张路斌,英文名Lufy( ),非计算机专业出身,由于本身喜欢玩游戏,毕业后千里迢迢前往日本,从事游戏开发工作。一开始接触Java、.Net和PL/SQL开发工作,由于碰上金融危机公司裁员,便跳槽至一家小公司做了半年手机游戏开发,随后到一家互联网公司工作。现在在一家游戏公司上班,接触最多的是Unity开发。Lufy曾开发《杨家将传奇》、大型网页游戏《アイドルバトル》、《Flash游戏ポイガチャ》、多平台三国记系列游戏,以及数十款手机小游戏。在CSDN博客上撰写了几十篇的技术博文,还著有《HTML 5 Canvas游戏开发实战》一书,并独立开发了HTML5游戏引擎lufylegend。近日Lufy接受CSDN社区之星栏目的专访,让我们一起来看看他在日本游戏发展道路上的点点滴滴。CSDN:请先介绍下自己。Lufy:大学毕业后,我最先接触Java开发,后来到日本做.Net和PL/SQL开发。很不巧的是,我在日本碰到了严重的经济危机,一起出来的小伙伴们都回国了。相比下,我运气较好,找到了一家做手机游戏开发的小公司,后又跳槽至另一家互联网公司,主要接触PHP、JavaScript和Flash。现在在一家游戏公司工作,接触最多的是Unity。CSDN:非计算机专业出身,为什么会选择到日本,在游戏行业发展?Lufy:我做这个行业,主要是因为我喜欢玩游戏。游戏玩多了,自然就会有“游戏中的某个地方要是如何如何设计,或许会更好玩”之类的想法,就会想要自己去做一款游戏。大学时,我做了一款《杨家将传奇》,在同类游戏中,它的人气还算不错,现在也有不少人在玩。这款游戏对我的影响非常大,也更让我坚信游戏开发之路。毕业后来到日本,很大一部分原因是我比较喜欢日本的游戏,到日本发展或许会让自己离梦想更近。实际上,到去年年末之前,我都不算是一个全职的游戏开发者,我之所以一直在坚持,是因为我很喜欢游戏开发。HTML5的游戏开发经验之谈——缩短开发周期,并想办法维护CSDN:我们知道您曾独立开发大型网页游戏《アイドルバトル》、《Flash游戏ポイガチャ》、多平台三国记系列游戏,以及数十款手机小游戏,能和我们分享下经验吗?Lufy:经验谈不上,我就根据自身开发经验简单的说下。之前我开发的有点规模的游戏,现在都已下线了。前几天我听了一个游戏经验的分享,和我的想法不谋而合,我在这里和大家分享下。游戏开发者都知道,一款游戏是否会火,根本就是不可预计的,有的游戏画面特效做得相当绚丽,有的游戏内容非常有意思,有的游戏玩法特别新颖,但最后都被淘汰了。当然,以上这些因素都是一款好游戏应该具备的,但也不是必要的。有时你觉得远不如自己的游戏反而一夜之间火爆了,有些简单的不能再简单的游戏,反而取得了很大成功。所以,经验告诉我们,游戏开发,就是不断的重复再重复,挑战再挑战,没人知道这个游戏是否会让你或者你的团队“一夜暴富”。此外,我认为游戏开发应该尽可能的缩短开发周期,让市场来决定你的游戏是否生存下去,然后再想办法维护。就像很多美剧一样,拍摄几集就开始播,先观察观众的反映和需求,反映不好还可以调整,或者直接放弃。当然,还有一些开发者开发游戏是为了自己的兴趣或者单纯的为了实现自己的某个理想,对他们而言,游戏做出来了,就已经算成功了。CSDN:2013年时,您写了一本名为《HTML5 Canvas游戏开发实战》的书,能介绍下吗?Lufy:这本书有对HTML5
canvas的API的详细介绍,也有对lufylegend.js引擎的使用详解,更重要的是,书中以实例为向导,详细讲述对休闲、射击、物理以及网络游戏等各种类型游戏的开发流程,包括游戏分析、开发过程、代码解析和小结等相关内容,帮助读者了解每种类型游戏开发的详细步骤,让读者彻底掌握各种类型游戏的开发思想。最后,书中通过数据对比分析,指导读者提升程序的性能、写出高效的代码,从而开发出运行流畅的游戏。CSDN:既然您提到了HTML5游戏引擎lufylegend,那么能否介绍下为什么会有自己开发引擎的想法?Lufy:至于我为什么想开发自己的HTML5游戏引擎lufylegend,这里我依然引用《HTML5 Canvas游戏开发实战》一书前言中的一段话来回答我开发HTML5引擎的原由:我是一个喜欢不断学习新知识的人,所以当HTML5作为一种新技术出现的时候,我没有理由不去了解它。由于本身对JavaScript有一定的了解,所以我在学习HTML5的Canvas时,上手非常快。出于对ActionScript的喜爱,我一开始便试着在JavaScript中模仿ActionScript的API来做开发,并且在博客上发表了《用仿ActionScript的语法来编写HTML5》系列文章,这便是最初的lufylegend开源库件的构建过程。当我把自己研究的类库整合到一起后,发现它使用起来十分方便,使用它来开发游戏可以节约大量的开发时间,于是我将其分享到了网上供大家免费使用,希望给相关开发者提供便利。CSDN:lufylegend有哪些优势呢?Lufy:lufylegend的优势在于入门简单、性能高等特点。其实所有的引擎都有一套自己的标准,并在这个标准上进行封装和扩展,所以在渲染过程中必然要增加很多额外的处理和计算等,但这些都会导致引擎效率的降低。而我在这款引擎的设计和维护上,一直坚持以高性能为第一目标,尽量简化渲染流程,以达到接近原生渲染的速度。我之前做过一个测试发现,在Canvas 2D基础上,lufylegend的渲染速度高出其他引擎很大一截。目前,lufylegend正在追加WebGL渲染功能,相信不久后的2.0版本,lufylegend在渲染速度上依然会保持领先。当然一款引擎只比性能是不够的,还要比易用性。在lufylegend交流群里,很多人都说,lufylegend太简单了,用它一天就可以开发出一款简单的小游戏。这个绝不是吹牛,lufylegend在设计上模仿了Flash的API。此外,在lufylegend中还有显示列表、对象、继承、事件等,极大的弥补了JavaScript在开发过程中的不足。lufylegend中还提供了对Box 2D的简易封装,以及Tween,不同屏幕的自动适配等功能。此外,我还引入了一些在Unity开发中自己发现的一些比较实用的小功能,这都让lufylegend更方便使用。CSDN:HTML5浏览器兼容性问题让人很头疼,你怎么看待这样问题?Lufy:说到兼容性,这也是出现许多引擎的原因之一。不同浏览器会有不同的处理,比如不同屏幕大小的自动适配,比如各个浏览器对音频的支持度等。开发者要么自己进行处理,要么就接触第三方工具或者引擎来处理。一款引擎,只有帮助开发者解决问题,才能受到欢迎。我觉得大家可以对兼容性持乐观态度,因为,兼容性的问题不可能会完全消失,但随着一系列标准的完善,这类兼容性问题会越来越小,未来会更小。所以,兼容性、渲染性等问题,应该交给引擎和框架来解决,开发者应该把重心放在自己的产品和开发上。CSDN:你觉得HTML5在开发游戏时有哪些优势?对它未来发展有哪些看法?Lufy:用HTML5开发游戏最大优势在于它的跨平台性,即无需进行下载就可进入游戏。一个链接一个二维码就可以在任何平台上向其他人分享你的游戏,还有比这个更简单的传播方式吗?再一个开发JavaScript人员储备充足,这也是一个很大的优势。HTML5出现的时候,我认为它是未来Web的方向。在移动开发方面,HTML5已经是主流了,这个不用多说。随着移动端和PC端对WebGL等新功能的支持,也让HTML5有了更大的发展空间,我觉得不光是在游戏领域,未来HTML5一定会渗入到各个领域。Unity能够缩短游戏开发周期,但学习成本高CSDN:您最近刚换了工作,现任工作最多接触的是Unity开发,可以说您现在也是一位Unity初学者,请问在学习Unity时,遇到了哪些难题?Lufy:我本身英语比较差,unity的界面是全英文的,所以遇到第一个问题就是打开unity后,眼睛看到的基本都是问号。这个难题我只能自己去查资料、摸索,慢慢学习资料查多了,再多的问号也就变成了文字。我比较喜欢Flash开发,对于Flash的设计理念根深蒂固,所以刚接触Unity时,遇到2D界面的开发,我总是将Flash的思路带入到Unity中,不过经过公司Unity大牛的指点,最终回归正途。此外,Unity还有自己的一套标准,如果只是将以前完全不同领域的思路或做法强加到Unity当中,只会让后期开发变得越来越困难,这也是导致很多Unity开发者失败的原因之一。再一个就是unity太复杂,并不是短时间内就可以掌握的,我接触时间还比较短,现在依然在逐步深入学习当中。CSDN:Unity在3D引擎方面具备卓越的品质和优势,同时也支持2D游戏的开发,您觉得它和HTML5相比,有哪些不同和优劣势?Lufy:其实Unity和HTML5基本没有冲突点,Unity主要是App开发,而HTML5的优势主要是页游开发或者是依赖于WebView的端游开发,这要看公司的产品侧重哪一块了。不过既然问到了,我简单说一下自己对Unity的看法。Unity的优点很多,简单总结的话,主要有以下几个方面:相对于游戏引擎来说,功能非常完善;学习资料丰富,交流社区也很强大,开发案例多;可以在PC端预览,Debug方便;Editor的扩展方便;GUI、以及NGUI等UI组件丰富;多平台支持;可以直接在AssetStore中购买所需素材或组件等。因为以上优点,使用Unity开发,能够有效的缩短游戏的开发周期。当然缺点也有,比如说学习成本比较高,想短时间深入了解Unity是不可能的。CSDN:给我们简单的介绍下日本游戏市场吧?Lufy:这个问题比较大了,我只能简单的说下我对日本手游的一点了解。日本手游中卡牌游戏居多,游戏一般都采取免费下载、内部收费的形势。
日本的手游的发布渠道比较单一,一般只考虑苹果以及谷歌旗下的应用商店就可以了。日本用户消费意识很高,日本人对扭蛋尤其钟爱,其也是日本手游的主要收费方式之一,卡牌类、RPG类、养成类、战略类,无论什么类型,扭蛋几乎无处不在,而且所有人都会大把的往里砸钱。日本手机网速比较快,而且手机上网基本上都是包月形势,所以不用担心游戏流量问题。日本人对手机游戏的狂热程度绝对超出你的想象,路上、电车上、厕所里,任何地方都能看到低头摆弄手机玩游戏的人。这也决定了,能够适应碎片化时间的游戏会比较卖座。CSDN:以后会回国发展吗?怎样看待国内游戏市场的发展?Lufy:这个当然,以后肯定会回到国内发展的。其实我觉得无论国内还是国外,手游开发都将成为未来游戏开发的主流。而且国内有着全世界最大的用户群,很多国外公司都开始进军中国手游市场,把中国当成最大的游戏市场,包括我现在的公司也是。现在智能手机在国内已经很普遍了,而且性能越来越高,再加上微信等各种平台渠道的推广,所以未来国内的游戏市场也就是手游市场,手游市场必将取代PC游戏市场。CSDN:给同样热爱编程游戏的小伙伴们提供一些学习建议吧。Lufy:这是一个老生常谈的问题,之前也有很多人总结过了,我再总结一遍吧。自己多动手,有些东西看一百遍或者听一百遍,也不如自己写一遍理解的透彻。多看代码,现在开源的代码库这么多,这绝对是提高自己编程能力的一个捷径。多跟人交流,有些问题可能自己通过调查解决了,但如果听下其他人的想法,或许会学到更多。尤其在你刚接触到某个新领域的时候,一定要多看书,这个书包括电子书,或者互联网上一些从基础到深入的连载文章。在开发过程中,最忌讳的就是遇到问题不思考就发问,虽然我觉得大家都知道这样不好,但是这类人确实有很多。举个简单的例子,一个对象的某个属性可以设定为两个不同的值,对于会学习的人来说,他会将这两个值分别设定,然后看一下结果有什么不同。而另一部分人,会直接到论坛或者QQ群等地方去问。这就是自学能力差异的体现。若想获悉张路斌更多动态,请关注。
CSDN博客: 新浪微博:
社区之星访谈上期回顾:
更多精彩内容,请点击查看。CSDN社区之星专访栏目,欢迎推荐采访人或自荐,来分享你的成长经历和相关技术,相关信息请发送邮件至:shanmz#csdn.net(#换成@)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章如何更快上手Unity? - 知乎22被浏览1141分享邀请回答1添加评论分享收藏感谢收起10添加评论分享收藏感谢收起Unity(9)
在本部分中,你将了解如何使用 Visual Studio Tools for Unity 的集成和工作效率功能,以及如何将 Visual Studio 调试器用于 Unity 开发。
Visual Studio Tools for Unity 和 Unity 编辑器集成,有助于提高工作效率。 这些提高工作效率的功能将自动执行常见的脚本编写任务,并将信息从 Unity 引入 Visual Studio,使你无需切换到 Unity 编辑器便可查找信息。
可以从 Visual Studio 快速访问 Unity 脚本文档。 如果 Visual Studio Tools for Unity 未在本地找到 API 文档,它将尝试联机查找。
在 Visual Studio 中,将需要了解的 Unity API 突出显示或将光标置于其上,然后按&Ctrl+Alt+M、Ctrl+H
在 Unity 中,大多数脚本都是通过从 MonoBehavior 类派生并替代它的一些方法而实现的。 MonoBehavior 向导可用于快速创建要重载的 MonoBehavior 方法的空定义。 使用此向导,可以指定要从可用方法列表中重载的一个或多个方法,选择将它们插入到代码中的位置,并决定是否要包括有关如何使用这些方法的注释。
在 Visual Studio 中,将光标放置在你可能要插入方法的位置,然后按&Ctrl+Shift+M&启动 MonoBehavior 向导。 或者,如果要在已实现的方法后插入新方法,则可在稍后指定此操作;只需按&Ctrl+Shift+M&即可。
选择要重载的方法。 在“创建脚本方法”窗口中的“选择要创建的方法”下,标记每个要重载的方法的名称旁的复选框。
确保“Framework 版本”下拉列表中显示的版本与你正在使用的版本匹配。 如果不匹配,将下拉列表中的值更改为要使用的版本。
选择将插入方法的位置。 默认情况下,将在光标位置处插入这些方法;如果要在其他位置插入,可以选择在类中已实现的任何方法后进行插入。 若要选择其中一个位置,需将“插入点”下拉列表中的值更改为所需位置。
如果需要向导为所选方法生成注释,则标记“生成方法注释”复选框。 这些注释是为了帮助你了解方法的调用时间以及其常规责任。
选择“确定”按钮退出向导,并将方法插入代码中。
当你还在学习 Unity API 时,或者当你需要重载不熟悉的方法时,MonoBehavior 向导尤其有用。 对 Unity API 更加熟练时,你可能更愿意使用快速 MonoBehavior 向导来快速创建你已熟悉的方法。
已经熟悉 Unity API 后,便可以使用快速 MonoBehavior 向导更快地实现重载的方法。 使用此向导,可以仅指定在光标位置插入的不带方法注释的一种方法。
在 Visual Studio 中,将光标放置在要插入方法的位置,然后按&Ctrl+Shift+Q&启动快速 MonoBehavior 向导。 与另一种 MonoBehavior 向导不同,使用此向导时,必须有意地放置光标,因为将始终在此位置插入新方法。
确保“创建脚本方法”窗口右上角显示的 Framework 版本与你正在使用的版本匹配。 如果不匹配,将下拉列表中的值更改为要使用的版本。
查找要重载的方法。 在“创建脚本方法”窗口中,开始在文本框中键入方法的名称。 将出现与输入的名称相匹配的方法的列表。
选择要重载的方法。 所需方法显示在列表中时,使用鼠标或箭头键选择它,然后按&Enter。 如果它是列表中的唯一方法,可以直接按&Enter。 将该方法插入你的代码中。
Unity 项目资源管理器可用于导航 Visual Studio 内部的 Unity 项目。
在 Visual Studio 中,在主菜单上选择“视图”,然后选择“Unity 项目资源管理器”。 键盘:Alt+Shift+E
Unity 项目资源管理器将使用与 Unity 编辑器相同的方法显示所有的 Unity 项目文件和目录 — 这与使用解决方案资源管理器导航 unity 脚本不同:后者仅包含你的脚本文件,将其显示为项目,并且由 Visual Studio Tools for Unity 生成的解决方案将对其进行组织。 尤其是在大型项目中,使用 Unity 项目资源管理器通常可以更轻松地定位需修改的脚本;还可以轻松地在 Visual studio 中修改其他种类的文件(例如,基于文本的配置文件),而无需将它们添加到 Visual
Studio 解决方案中的一个项目中。
连接到 Unity 实例时,可以从 Visual Studio 内部的 Unity 控制台查看消息。 这包括 Unity 中的错误和警告。 消息将显示在 Visual Studio 的“错误列表”窗口中;Unity 中的错误消息将显示在“错误”选项卡上,警告消息将显示在“警告”选项卡,而其他消息(比如通过使用 Debug.Log Unity API 发送的消息)将显示在“消息”选项卡上。
为了查看消息,必须&Unity 项目以支持脚本调试并导入适用于你的
Visual Studio 版本的 Visual Studio Tools for Unity 包,并且 Visual Studio 必须。
如果不想在 Visual Studio 的“错误列表”窗口中看到 Unity 中的错误、警告和消息,则可在“配置”菜单中禁用它们。
通过使用键盘快捷方式,可以快速访问 Unity Tools for Visual Studio 功能。 以下是可用快捷方式的摘要。
快捷方式命令名
打开 Monobehavior 向导
Ctrl+Shift+M
EditorContextMenus.CodeWindow.ImplementMonoBehaviours
打开快速 Monobehavior 向导
Ctrl+Shift+Q
EditorContextMenus.CodeWindow.QuickMonoBehaviours
打开 Unity 项目资源管理器
Alt+Shift+E
View.UnityProjectExplorer
访问 Unity 文档
Ctrl+Alt+M、Ctrl+H
Help.UnityAPIReference
附加到 Unity 调试器(播放器或编辑器)
无默认值
Debug.AttachUnityDebugger
如果不喜欢默认值,可以更改快捷键组合。 有关如何更改快捷键组合的信息,请参阅。
Visual Studio Tools for Unity 让你可以使用 Visual Studio 功能强大的调试器同时调试 Unity 项目的编辑器和游戏脚本。
Visual Studio Tools for Unity 通过 UDP 连接与 Unity 通信。 这表示你可以使用完全相同的方式连接到本地运行或在网络上任意位置运行的 Unity 实例。 可以使用“选择 Unity 实例”对话框连接到可在网络上看到的任何 Unity 实例。
在 Visual Studio 中,在主菜单上选择“调试”,然后选择“附加 Unity 调试器”。
或者,在 Visual Studio 的状态栏中,选择 Visual Studio 右下角的插入图标。
如果插入图标显示选中标记,则已连接到 Unity 实例。
“选择 Unity 实例”对话框将显示有关每个可以连接的 Unity 实例的信息。
在此 Unity 实例中运行的 Unity 项目的名称。
运行此 Unity 实例的计算机或设备的名称。
如果此 Unity 实例作为 Unity 编辑器的一部分运行,则为“编辑器”;如果此 Unity 实例是独立播放器,则为“播放器”。
此 Unity 实例正在通过其进行通信的 UDP 套接字的端口号。
由于 Visual Studio Tools for Unity 和 Unity 实例正在通过 UDP 网络套接字进行通信,因而你的防火墙可能会对其进行询问。 如果发生这种情况,则必须授权连接,以便 VSTU 和 Unity 可以进行通信。
未运行 Unity 编辑器时,可以直接将 Visual Studio Tools for Unity 连接到在独立播放器上运行的 Unity 应用,或调试特定于平台的问题。
请确保在已启用脚本调试的状态下创建开发内部版本。 在 Unity 项目的版本设置中,标记“开发内部版本”和“脚本调试”复选框。
此外,若要调试在&Unity Web Player&中运行的 Unity 应用,还需要将其配置为使用“开发版本通道”。
在 Unity Web Player 的上下文菜单上,选择“版本通道”并确保“开发”选项处于启用状态。
在 Unity 4.2 及更高版本中,“版本通道”上下文菜单项仅当打开上下文菜单并按下&Alt&键时,才在 Web Player 上下文菜单上可用。 如果 Web Player 正在 Mac OS X 上运行,则按“选项”键。
最后,请确保连接到要调试的 Unity 实例。 有关如何执行该操作的信息,请参阅&部分。
许多 Unity 开发人员将代码组件编写为外部 Dll,以便可轻松地与其他项目共享开发的功能。 Visual Studio Tools for Unity 可以轻松无缝地调试这些 DLL 中的代码以及 Unity 项目中的其他代码。
Visual Studio Tools for Unity 此时仅支持托管 DLL。 它不支持调试本机代码 DLL,如使用 C++ 编写的代码。
请注意,此处所述的方案假定你具有源代码(即你正在开发或重用自己的第一方代码)或具有第三方库的源代码,并计划在 Unity 项目中将其作为 DLL 进行部署。 此方案未描述不具备源代码时的 DLL 调试。
将现有的 DLL 项目添加到由 Visual Studio Tools for Unity 生成的 Visual Studio 解决方案中。 不太常见的情况是:你可能会启动一个新的托管 DLL 项目,以便在 Unity 项目中包含代码组件;如果是这种情况,则可将新的托管 DLL 项目添加到 Visual Studio 解决方案。 有关向解决方案添加新项目或现有项目的详细信息,请参阅。
在任一情况下,Visual Studio Tools for Unity 均将维护项目引用,即使不得不再次重新生成项目和解决方案文件,所以你只需要执行一次这些步骤。
引用 DLL 项目中正确的 Unity 框架配置文件。 在 Visual Studio 的 DLL 项目属性中,将“目标框架”属性设置为正在使用的 Unity 框架版本。 这是与你的项目作为目标的 API 兼容性相匹配的 Unity 基类库,如 Unity 完整、微型或 Web 基类库。 这可以防止你的 DLL 调用存在于其他框架或兼容性级别中而不存在于你正在使用的 Unity 框架版本中的框架方法。
将 DLL 复制到 Unity 项目的资产文件夹。 在 Unity 中,资产是与 Unity 应用一起打包和部署的文件,所以可以在运行时加载它们。 由于 DLL 于运行时链接,因而必须将 DLL 作为资产部署。 若要部署为资产,Unity 编辑器需要将 DLL 放置在 Unity 项目的“资产”文件夹中。 可以采用两种方法执行此操作:
修改 DLL 项目的生成设置,以包含将输出 DLL 和 PDB 文件从输出文件夹复制到 Unity 项目“资产”文件夹的生成后任务。
修改 DLL 项目的生成设置,以将其输出文件夹设置为 Unity 项目的“资产”文件夹。 DLL 和 PDB 文件都将放置在“资产”文件夹中。
需要调试 PDB 文件(因为它们包含 DLL 的调试符号),并将 DLL 代码映射到其源代码形式。 Visual Studio Tools for Unity 将使用来自 DLL 和 PDB 的信息来创建一个 DLL.MDB 文件,此文件是 Unity 脚本引擎所使用的调试符号格式。
调试代码。 现在可以同时调试 DLL 源代码以及 Unity 项目的源代码,并使用所有熟悉的调试功能,如断点和单步调试代码。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3935次
排名:千里之外
转载:46篇
(1)(6)(43)用Unity引擎开发游戏,如何提升编程能力? - 知乎149被浏览16332分享邀请回答31 条评论分享收藏感谢收起34 条评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 unity api 的文章

 

随机推荐