Unity3D开发七惑
使用Unity3D开发也有大半年了,心中存惑如下,愿与各位开发者一起探讨:
(1) 远离普适编程之惑
随着游戏引擎的不断发展,游戏程序员的开发层级也越来越高,以unity3d尤为突出。如果是进行Web模式的开发,那需要关心的方面更少了,距离传统3D游戏开发中的windows普适性编程知识也越来越远。
(2) 托管之惑
Unity3D使用托管语言进行开发,一般使用C#,这样很多开发者都远离了内存管理这样的底层功夫,虽然使用托管语言一样要注意内存使用的效率,但GC这样的“大保姆”让不少人都懈怠不少。
(3) 隐藏之惑
Unity3D为了提高应用开发层次,包装隐藏了诸多细节。使用MonoDevelop进行Debug的时候,你无法看到从传统的main函数到断点的CallStack。不知道哪里调用了Awake,Start和Update。
(4) 脚本之惑
GameObject是容器,脚本往里放。由于只要写一个继承自MonoBehavior的Component脚本,就可以访问挂接对象的所有属性,乃至访问整个场景的GameObjects,传统游戏开发中模块的访问禁地仿佛都不存在了,层次很容易发生混乱。有时候斟酌,到底一个功能是放到一个普通的非脚本类,还是放到脚本类;一个GameObject是否应该只挂接一个脚本,而其他功能为非脚本类,由此脚本进行非脚本类的Start和Update。
(5) 乱序之惑
由于不同脚本的Awake和Start执行是无序的,所以脚本A的Start如果依赖了脚本B的Start,则会随机出现问题,awake如果存在依赖也是一样。虽然Unity中有设置脚本执行顺序的地方,但还是不方便使用,特别是依赖关系复杂的情况。
(6) 职业发展之惑
Unity3D的上手难度相对来说已经很低了,这和Unity3D的设计理念是紧紧相扣的,它本来就是想让个人开发者能轻松开发出游戏,即使开发者是一个美术或者策划,经过短期的学习,都可以设计开发出耐玩的小游戏。Unity3D初衷并非是大型游戏开发,虽然它以后可能是。一个使用传统3D引擎,有着两三年经验开发者(比如Gamebryo),和一个新人一起接触学习Unity3D,一年之后,两者的差距起码在Unity3D的开发知识上,不会有较多差距。当然,这也和开发层级高,使用托管语言和脚本组件的开发机制有关系。
(7) 大型游戏开发之惑
灵活的脚本机制容易滥用,非二进制的文件不用进行版本Merge。在国内的网络条件下,webPlayer模式的Unity3D大型游戏还是在资源尺寸上扼住了不少开发者的喉咙。而作为Standalone模式开发的话,相对于传统非托管的开发引擎开发的大型游戏,在运行效率上还是有所欠缺的。这个效率体现在托管中间语言到二进制的转换,以及内存的灵活管理上。
Unity3D开发七惑的更多相关文章
- 跟我从零基础学习Unity3D开发--NGUI入门基础
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...
- Unity3d开发IOS游戏 基础
Unity3d开发IOS游戏 基础 @阿龙 - 649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...
- Unity3D开发必备神器(Visual Studio Tools for Unity)
Unity3D开发必备神器(Visual Studio Tools for Unity) 开发Unity3D程序你用的什么IDE呢? 1.MonoDevelop 2.VS 可能你的回答是这样的,我用的 ...
- 【Unity3D】Unity3D开发《我的世界》之六、创建地形(视频 + 源码)
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/unity_minecraft_06.html 一.引入LibNoise 虽然Unity3D里也有一个Mathf.P ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- 快速开发平台分享-UCML快速开发七种武器
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能 ...
- unity3d开发实战《啪啪三国》技术详解!
去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解 ...
- 菜鸟在线教你用Unity3D开发VR版的Hello World
大家好,我是菜鸟在线的小编.这篇短文将告诉大家如何用Unity3D开发VR版的Hello World. 1开启SteamVR并连接Vive设备 (a)登录Steam客户端,并点击右上角的VR按钮,这时 ...
- unity3d开发app的框架
unity3d开发app的框架,开源地址 https://coding.net/u/liuhaili/p/U3DApp/git 希望能和有相同兴趣的朋友一起完善 打开Scene下的MainUI场景 目 ...
随机推荐
- C 进制 类型说明符 位运算 char类型
一 进制 1. 什么是进制 是一种计数的方式 数值的表示形式 2. 二进制 1> 特点: 只有0和1 逢2进1 2> 书写格式: 0b或者0B开头 3> %d 以带符号的十进制形式输 ...
- [CF106C]Buns
面包师Lavrenty打算用馅料做几个面包,然后把它们卖掉. Lavrenty有\(n\)克面团和\(m\)种不同的馅料.馅料种类的下标从\(1到m\),他知道他的第\(i\)种馅料剩下\(a_i\) ...
- facebook演讲
任何为了更大愿景工作的人,可能会被称为疯子,即使你最终获得成功. 任何为了复杂问题工作的人,都会因为不能全面了解挑战而被指责,即使你不可能事先了解一切. 任何抓住主动权先行一步的人,都会因为步子太快而 ...
- vscode开发智能合约
开发工具 EOS 开发终极神器-vscode (你绝对找不到的干货) lome · 2018年04月19日 · 最后由 18636292520 回复于 2018年09月15日 · 15672 次阅读 ...
- java面试整理
IO和NIO的区别 这是一个很常见的问题,如果单纯的只回答IO和NIO的区别,只能算及格.我个人觉得应该从以下几个方面回答: 1).IO简介, 2).TCP的三次握手,因为这也是两者的区别之一, 3) ...
- ajax获取动态列表数据后的分页问题
ajax获取动态列表数据后的分页问题 这是我在写前台网站时遇到的一个分页问题,由于数据是通过ajax的方式来请求得到的,如果引入相应的js文件来做分页,假如只是静态的填放数据到列表各项内容中(列表条数 ...
- wpa_supplicant与kernel交互
wpa_supplicant与kernel交互的操作,一般需要先明确驱动接口,以及用户态和kernel态的接口函数,以此来进行调用操作.这里分为4个步骤讨论. 1.首先需要明确指定的驱动接口.因为有较 ...
- 《剑指Offer》题十一~题二十
十一.旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组{3, 4, 5, 1, 2}为{ ...
- c# throw抛出上一个异常
catch(exception e) { throw; } 不仅抛出这次的异常,也抛出之前的异常. 用法示例:函数A调用函数B,A用到此throw时,B中发生的异常也会继承过来. catch(exce ...
- C#中委托的发展与匿名函数
匿名函数(C# 编程指南) 匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数. 共有两种匿名函数 ...