我在发布完unity3d游戏时遇到报错信息,但是在unity 编辑器器能正常运行,但是一发布就报错

使用Unity3D是创业团队失败的原因吗? - 推酷
使用Unity3D是创业团队失败的原因吗?
第一个项目虽然失败了,但是最起码成功上线,并且获得了一定的收入(虽然杯水车薪),也因为第一个项目拉来了投资。但是第二个项目就彻彻底底的胎死腹中了。
&&&&&&& 没有检讨、没有总结,大家自然而然而又兴高采烈的开启了第三个项目。
&&&&&&& 我感到有些悲哀。如果我们都不知道自己的弱点在哪里,不明白自己的优势在哪里,如何能够扬长避短?一个创业团队难道靠硬推能推出一款游戏吗?
第二个项目是打算山寨《公主篷特2》,是一款《愤怒小鸟》玩法的带rpg元素的手游。《公主》就是拿Unity做的,并且有一定的3D元素。美术之前有说过,我们没有人物原画设计师,所以我们不适合做2D游戏。当时我就想你们不适合做2D游戏,那我就学Unity3D,策划也认为如果使用3D会有更好的效果(物理和细节表现)。
&&&&&&&& 但是遗憾的是项目失败了,而Unity也成为领导和主美口诛笔伐的对象。按照主美的说法,我们对Unity掌握的不成熟,所以画面丑不是因为我们做的不好,而是Unity表现的不好。再加上我们的做模型的人是做高模的,然后学做低模效果肯定差了很多。总之一句话,我们的画面表现不好是由原因的,而且主要原因还是客观的,不是水平问题。
&&&&&&&& 同时策划也有表达过,因为我们使用了不熟悉的游戏引擎,所以花了很长的时间来摸索它,耽误了开发进度。所以失败的第二个原因是功能完成度不高,比如原计划要配置300个关卡的,但是最后一个版本为止只有3个关卡,而且人物的数值什么的都没有做。这个进度慢是因为程序一开始耽误了很多时间,并且没有招到数值策划。总之一句话,项目进度慢不是规划的不好,也不是策划水平问题,而是因为一些客观原因。
&&&&&&&& 如果这就是我们失败的原因的话,那我敢打赌,第三个项目还会失败。我们为了做项目而做项目,从来没有一个游戏是我们一开始想就非常兴奋----这个游戏做好了绝对会火,从来做的时候都是束手束脚的感觉,而且做的时候从来没有感到我们在完成一个非常好玩非常酷的游戏,只是感觉越做越不喜欢,越做越没有希望。
我有没有尝试过改变现状呢,尝试过,失败了。后来我无意看了下我的职位(团队独立成一个公司后,职务有一定调整),原来我只是个客户端程序员。怪不得我提的很多意见都不了了之,因为我不是主程、不是领导、不是项目经理,我只是个客户端程序员。即便代码都是我写的,我也只是个客户端程序员。有点像在某个黑暗的王朝中,看着皇帝和大臣做了一个又一个荒唐的决定,看着王朝一步步走向末路,却无力改变。空有报国之志,却无报国之门。
说了很多废话,我们回过头来说Unity。无论别人怎么看,我坚定不移的钟情于Unity。曾几何时我也想自己写一个游戏引擎,然后如臂使指的控制它,来完成一个酷炫的游戏。不过后来cocos2d-x做的越来越好也就打消了这个念头,再后来接触Unity后就更加不会想着自己来做游戏引擎了。因为我要的功能它都有,即便因为一些想法的出入,某些功能实现起来有些别扭,但是没有功能的短板。那么多人,那么多团队使用Unity做出了成功的游戏,这里面有大型的3D MMO,也有像《忍着必须死2》这样的轻量级手游,也有像《影之刃》《王者之剑》这样的2d aprg。各种类型的手游Unity都有成功的参考案例,这个时候一切失败的因素都不在引擎上面,而在使用者上面。
选定一个游戏引擎,然后坚定不移的使用它,不断的积累和完善相关功能。这个是程序的积累,也是团队的积累。今天用cocos2d-x明天用Unity后天又换回cocos2d-x,我们的时间都消耗在研究、思考、学习上面了。对于创业团队来说,我们有多少次失败的机会?有多少可以浪费的时间?理想中的情况是,第一个项目我们用6个月时间来做,第二个项目4个月,第三个项目2个月换个皮就可以了。但是我们的情况呢?第二个项目我研究了一个月的Unity,又因为代码的重构浪费了一个月的时间。第三个项目是其他人负责的,断断续续研究了三个月时间,现在刚刚开始写功能。我们的积累在哪里呢?如果每次我们都重新开始,那程序是不是很失败?
我之前有写文章表达过这样的思想,我无论做2D游戏还是3D游戏都倾向于使用Unity。倒不是说Unity做2D游戏会比cocos2d-x方便多少,毕竟不同的思路,不同的表现形式,而且说实话2D游戏本身就没有什么技术难点,更多的体现在细节表现和功能逻辑上面。但是Unity做游戏有这么几个优势:
&&&&&&&&& 1、方便的跨平台,平台相关的功能Unity都已经帮你实现好了。即便有些Unity没有实现,也有插件帮你实现。
&&&&&&&&& 2、基于Unity的酷炫的粒子光效编辑。Unity本身就是一个功能强大的粒子编辑器。 之前我还认为cocos2d-x的粒子系统的功能足够了,但是跟专业的编辑器比起来,远远不够。粒子系统要跟粒子特效编辑器配合起来,其功能远远不是之配置一个粒子系统的几个参数就可以的。cocos2d-x本身的粒子系统是很鸡肋的功能,只能拿来做一些简单的光效,不可能用来做复杂的技能特效。
&&&&&&&&& 3、由于框架和架构的优势,Unity的游戏可以极大程度避免崩溃和闪退。由于代码都是c#写的,并且是组件结构,所以即便出了错误也只是个异常而已,而不会影响到系统流程。
&&&&&&&&& 4、强大的性能分析工具,可以轻易的找到内存和cpu的瓶颈。支持Android和iOS的真机运行分析。
&&&&&&&&& 5、编辑器可以方便的进行扩展,不需要像传统游戏公司一样,有一个专门写编辑器的部门。无论是场景编辑器还是技能编辑器都可以轻松搞定。如果想玩高科技的话,还可以把技能编辑器做成可拖拽的模块化结构,策划可以像搭积木一样来编辑技能。最重要的是,这些都是所见即所得的。
&&&&&&&&& 6、方便的资源管理系统。使用Unity,你不用特意维护几份资源(比如原始资源、打包后的资源、iOS版本资源、Android版本资源等等),只要一份资源,然后Unity里面可以设置它的具体参数,比如使用纹理压缩、最大限制在512x512大小等等。Unity发布游戏的时候会自动根据平台相关的导出选项导出正确的资源。
&&&&&&&&& 7、丰富的插件。有大量的功能我无论拿cocos2d-x还是Unity都不知道怎么实现。比如一些shader特效、物件碎裂的特效、场景破坏和变形的特效等等,这些在Unity插件中都可以找到对应的实现。而且很多Unity的游戏都可以反编译,无形中又可以学到很多东西。
&&&&&&&&& 8、熟悉之后确实感觉Unity很简单。很多功能都是成体系的自然而然的。比如物理、碰撞检测、导航寻路、场景管理、场景烘焙。这些无论拿哪个出来都是相当有技术的功能,但是在Unity中几个按钮、几步操作就可以实现对应的功能。
至于缺点也有一些:
&&&&&&&&& 1、最主要的,无论是Unity还是插件都是要收费的。(破解版,等赚钱了再考虑回馈)
&&&&&&&&& 2、由于iOS平台的一些限制,Unity很难做动态代码更新。而cocos2d-x有lua这个比较成熟的方案。(如果程序稳定了,需要频繁更新代码的机会不多,更多的是更新配置和资源)
&&&&&&&&& 3、可能有些人不熟悉Unity,从而选择了开源的cocos2d-x。适应Unity的框架、工作方式需要一定的时间。(相信我,不会很长,要知道一个8岁的孩子都能拿Unity来做游戏,并且上架,如果有程序员说搞不定Unity,那干脆转行卖烧饼吧)
&&&&&&&&& 4、对应上面的第6点,由于Unity中资源对应的配置有很大的重要性,所以一个Unity功能就是资源+代码的整合,你很难分出一个资源包。这样你的Unity项目可能很大。(使用AssetsBundle打包后可能避免这个问题,但是项目初期资源变动大,经常打包很不方便)
&&&&&&&&& 5、Unity很多设计都是为可视化编辑考虑的,举个例子,2D的动画可以方便的拖几张图片就可以搞定。但是如果我每张图片都有一定的偏移,那就麻烦了,需要自己重新实现帧动画功能,自己加载配置文件来实现。(这个严格说来不是引擎的问题,毕竟引擎不是为了一家游戏公司设计的,大众化的简易的操作方式是唯一需要考虑的。但是很多时候确实感觉有些不爽)
以上是我对半年Unity使用的总结。基本上说是偏爱Unity的。但是不得不说,某些团队不适合做3D游戏,那么认清自己的短处,3D这块儿就不要碰,即便只是简单的3D模型渲染都不要,因为根本就做不好。& 如果只限于2D游戏的话,更多的还是看个人喜恶,我就是习惯用cocos2d-x,那么我说多少遍Unity的好话都没有用。能快速的开发出游戏才是硬道理。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致&&&&&&&& 本人在做线上与线下Unity教学中,经常遇到一些常见的疑问,为了更好的快速进行答复,我平时注意收集了一些典型的错误与疑问,且附有个人解答,供大家交流之用。不足之处,请大家指明。&&& 如果后期总结的易错误点,量比较大时我会进行分类处理,更加方便大家查询。
1: Ngui 和 UGUI 用法是一样的么?现在游戏公司还在用NGUI 还是用Unity内置的UI系统?
答: 如果你是Unity学习者,建议你NGUI/uGUI都学习,因为目前旧项目一般都用NGUI, 现在立项的公司很多考虑用uGUI ,毕竟第1是官方技术且是开源的技术,而是后继会不断发展,有潜力。
2: unity3d的 Terrain上无法烘焙树木的阴影,该如何解决?
答:Detail meshes 本身不参与烘焙过程,但是其会对地形的lightmap进行采样。所以,需要对原生的lightmap进行修改,添加阴影。
3: uGUI 中 slider和scorllbar这么相似,分别用在那些地方啊?
答:解释如下: Slider 控件适合做项目中的“音量调节”、“生命数值”显示等方面,注重数值展示方面。ScrollBar 控件一般不建议单独使用,属于“基础性”控件,适合与其他控件组合成功能更加强大的“复合控件”,例如我在视频中讲解的“ScrollRect”控件。(作为用户选择部分)
4:& unity做个项目,安装在手机上运行一会卡死,都不知道从哪里入手找bug,求各位大神帮忙。。。
答:你自己开发一个移动设备上的找Bug的机制: 如下操作: 第1: 使用Application.persistentDataPath 作为保存数据的路径。 自己写一个调试类 (例如: Debuger.cs) 第2:把需要在程序中切入的调试代码,最终写入txt 文件(或者XML文件) 第3: 在手机死机后,没有关系。重新进入后,进入自己开发的一个专门显示txt 或者XML 中内容的页面,查看程序运行到哪里,最终找到原因。这种机制原理,适用于所有的移动平台的调试。
5 this.gameObject.transform.position= new Vector3(1F, 2F, 3F); 老师,gameObject和transform,position都是属性,他们之间怎么能引用呢,不是应该通过对象和类来引用的吗?
答:transform 是GameObject 的属性。 而GameObject是不能直接应用 transform 的,没有这个静态属性。(Unity规定)。 所以我们通过this.gameObject. 。 获得这个脚本所在对象(返回GameObject).然后再获取transform。
6: uGUI 中 老师,我怎么拉不动那中心点,总是拉着整个button或text?
答:你拉不动那个中心点,原因是Unity快捷栏中的“Center”在起作用,它保证中线点就一直在控件的中心位置。 所以请把“Center”点击改为“Pivot”就可以移动控件中心点了。
7: C# 有高内聚低耦合的概念吗?
&答:&高内聚低耦合&是开发中的一个重要设计与开发原则,C#作为国际上最流行的开发语言之一,当然具备。 本质上其实与语言无关,这是一种开发的宗旨、思想。
8: unity5 可以使用visualstudio 开发代码,哪可以使用Eclipse开发吗?
答:目前Unity 不支持Eclipse 作为代码编辑器插件开发项目。
9: 数组定义好长度之后,想要改变长度怎么办?
答:数组的特点就是,一点定义了长度,就不能更改。如果你要用可变长数组,就学习“Unity编程基础篇”,里面讲解了ArrayList集合。它的长度是可变的集合。其本质内部实现也是用数组,进行多个数组相互倒换实现的。
10: 旋转的局部坐标系与世界坐标系的区别是什么?
答:局部坐标旋转是指以父物体为参考,进行旋转。而世界坐标系以“坐标陀螺”来进行旋转。类似的情况例如:东、南、西、北、是世界坐标系。而前、后、左、右是局部坐标系
11: uGUI 怎么改变Canvas的屏幕大小?
答:两种方法:1:可以推进摄像机,如果是2D开发,则把摄像机的Size 设置的更小些。 2:可以使用代码方式对Canvas 的Scele 做缩放处理。
12: 怎样保存游戏进度? Save 和 Load功能?
答:保存游戏的进度本质就是数据持久化技术的应用。例如我视频中说的Unity提供的Playerfab 。可以把当前玩家的位置信息、状态(分数、血量、**)等保存且持久化即可。如果是复杂的大量数据保存,建议用XML作对象与XML的串行化。具体可以看看我下月发行的《Unity3d/2d 游戏开发零基础到精通》的,“数据持久化”章节有详细论述。
13: 请问:我想通过脚本实现自定义换肤,如何实现比较好?如何利用Sprite Pakcer打包?
//动态追加控件 GameObject GoCloneObject = newGameObject(&Button&); //添加精灵(外观处理) Image image= GoCloneObject.AddComponent&Image&(); Button btn =GoCloneObject.AddComponent&Button&(); image.overrideSprite=Resources.Load(&Textures/Sprites/Emoticon - Frown&, typeof(Sprite))as S
以上代码可以实现动态生成控件,且自定义“换肤”。UGUI 中严格来说,我们不需要“Sprite Pakcer打包 ”
14: 用vs2013打开创建的C#脚本,调试的时候显示:无法直接启动带有类库输出类型的项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目!我已经设置了那个启动项目,但是还是调试错误?
答:是这样的。 VS只是我们写代码的工具,提供了类方法提示、方法高亮显示等功能。但是脚本的运行,还是需要运行Unity的Play 按钮的。
15: 老师我的VS 是Blend forstudio2013,在unity编辑器设置为VS打开C#脚本时,报错打开的不是有效的项目,这该怎么办啊
答:建议使用VS 2013(官方默认的是MonoDevelop)。你说的VS 版本可能不兼容。
16: 老师,我在unity5.0里面,想播放动画,this.animation.play ();这样不行~
答:API 有所更改。this.GetComponent&Animation&().Play();更多Unity5.0 内容API更新请首先看我博客:http://liuguozhu./1190 & 。
17: text.rectTransform.rect.Set(0, 0, 417, 2*(j * 52.5f + 300));为什么没有效果呢?如果要设置text的hright属性要怎么办?
答:这样定义:txt_Obj.rectTransform.sizeDelta = newVector2(200, 200);//改变宽度与高度。
18: 老师,我问一个问题,我在game视图16:10 Portrait(10:16)的视图下运行游戏,场景里的物体运动都是正常的但是当我把game视图切换到free aspect的时候,场景里的运动物体就都有了“残影”,就像是屏幕没有刷新一样,这个是什么问题呢,我的摄像机用的是正交模式就像是屏幕不刷新了,每一帧都停留到了屏幕上?
1: 这种情况,先考虑在你角色的背后,加一个背景贴图。
2: ngui的图集打的不能太大。
19: 老师,Unity中“预加载”什么意思,如何实现?
答:&“预加载”一般分为两种情况:
第1种情况: 转换场景的时候,我们可以使用异步场景加载的技术,来实现。目的是给玩家一个显示画面,在系统后台加载场景数据,等加载完毕,显示整个场景。代码举例如下:
&&& public class ScenesLoading : MonoBehaviour{
&&&&&&& public Slider&& Sli_P&&&&&&&&&&&&&&&&&& //调用进度条
&&&&&&& private AsyncO&&&&&&&&&&&&&&&&&&&&& //异步对象
&&&&&&& private float curP&&&&&&&&&&&&&&&&&&&&&&&& //当前进度
&&&&&&& void Start ()
&&&&&&&&&&& StartCoroutine(loadScene());
&&&&&&& //异步读取场景
&&&&&&& IEnumerator loadScene()
&&&&&&&&&&& //async =Application.LoadLevelAsync(ConvertNames.SceneNames[GlobalParameterManager.LoadingScenesName]);&&&&&&&&&&&
&&&&&&&&&&& async =Application.LoadLevelAsync(ConvertNames.GetInstance().ScenesToName(GlobalParameterManager.LoadingScenesName));
&&&&&&&&&&& curProgress = async.
&&&&&&&&&&&
&&&&&&& void Update()
&&&&&&& {&&&&&&&&&&&&&
&&&&&&&&&&& if (curProgress &= 1)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& curProgress += 0.01f;
&&&&&&&&&&& }
&&&&&&&&&&& Sli_Progressbar.value =curP
第2种情况:
& 在同一场景中实现“预加载”。
&如果一个场景非常庞大,势必要进行优化。优化最简单的思路可以如下:
1&& 遮挡剔除。
2&& LOD 层级细节。
3&& “层消隐”处理
如果以上步骤还不明显的话,可以人为的把整个大场景,划分为几个部分,当“角色”(主角)要进入一块“区域”的时候,可以提前3-20秒进行场景的加载,当“角色”离开这片区域时,我们则可以销毁这片“区域”,以节省计算机或者移动端设备的内容空间。 这就是“预加载”技术。核心代码如下:
&&&&&&& void Start()
&&&&&&&&&&& //启动加载大型建筑模型
&&&&&&&&&& StartCoroutine(&LoadBigBuilding&);
&&&&&&& //本场景进入若干秒后,启动“预加载”大型场景
&&&&&&& IEnumerator LoadBigBuilding()
&&&&&&&&&&& yield return newWaitForSeconds(intLoadTime);
&&&&&&&&&&& GameObjectgoBuilding_A=Resources.Load(&Prefabs/Scenes_A&) as GameO
&&&&&&&&&&& GameObject goCloneBuildingA =GameObject.Instantiate(goBuilding_A, Vector3.zero, Quaternion.identity) asGameO
20:& 刘老师,There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.控制台的消息怎么删除,不出现这个
答: 这个警告信息告诉我们,场景中存在了2个“音频监听器”,这是Unity不允许的。 解决方法很简单,你只需要把其中一个摄像机的监听给禁止即可。例如下图:
21:角色控制器能不能触发OnTriggerEnter等方法?
答:角色控制器(CharacterController)不能应用OnTriggerEnter 等方法,如果需要检测CC(CharacterController),需要对方通过名称或者Tag来触发检测。如果需要CC给刚体施加“力”,可以用& OnControllerColliderHit() 方法实现。
(关于其他更多的初学者常见Unity疑问与解答,后面还会继续总结,敬请期待.)Unity3D 编辑器发布 Linux 试验版_Linux新闻_Linux公社-Linux系统门户网站
你好,游客
Unity3D 编辑器发布 Linux 试验版
来源:linuxtoy.org&
作者:黑日白月
Unity3D 编辑器发布 Linux 试验版,关于这个试验版本,值得注意的有:
这是试验版本,连 Alpha 都不是。实际上 Unity3D 需要通过,从而决定是否在下一步继续支持 Linux 版本编辑器的开发。
官方支持 ,同时提供适用于
运行需要 NVIDIA、AMD、Intel 官方支持的显卡驱动,NVIDIA/AMD 开源驱动是否可运行尚待验证
仅支持 64 位 Linux,不过需要 32 位兼容运行库
该编辑器版本基于 Unity 5.1.0f3,支持 Linux、Mac、Windows 等桌面平台的成果导出,以及
移动平台的成果导出。
Unity3D--定义摄像机的投影矩阵
Unity3D 几个默认函数的区分
Unity3D 一个设置方向键移动和空格起跳的脚本
Unity3D 给对象(gameObject)添加脚本代码
Unity3D中实现动态加载Resources目录外的资源
Unity3D 的详细介绍:Unity3D 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
& (12/09/:24)
& (06/17/:06)
& (04/04/:15)
& (07/17/:47)
& (04/04/:55)
& (04/11/:55)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Unity3D开发技巧:如何避开unity编辑器的那些坑
招聘信息:
文/瀚阳以下总结一部分来自经验之谈,一部分来自其他人的分享。总的来讲,Unity开发原型和效果、验证想法,确实是无比便利。可能一个月就把核心玩法做得差不多。强大的编辑器功能让我们也有很大的可扩展空间来协助我们开发工具。可是编辑器是把双刃剑。如果提前看清楚有什么坑在前面,或者其他人踩过什么坑。我想这会对项目风险的把控会有很大帮助。避开unity的坑1.制作抽象的prefab来做关卡编辑尽可能制作抽象的prefab来做关卡编辑,该prefab应该足够抽象简单(只有一个GameObject,然后通过Gizmo来绘制是个不错的手段),否则以后变化的时候(常见的就是改美术资源),所有关卡都lost prefab,那么对策划来说是一场灾难。可以考虑通过数据表+编辑器的方式来提供策划操作同时也不再需要担心lost prefab的问题。prefab越简单抽象越不容易丢失,prefab之间嵌套的正确方式是通过链接而不是挂在节点下面。2.尽可能避免修改Scene,方法有几种:使用xml之类的数据组织场景尽量多让scene由prefab组成,这样变动都在prefab上使用工具做场景Merge3.不要过度依赖Component特性来开发,考虑数据驱动。4.逻辑容易散落在编辑器各处,可以做一个中心管理。利用Unity的特性组织好hierarchy,不管是编辑的时候还是运行的时候,编辑的时候可以通过工具来简化组织层级的工作。让每个场景自己能跑。利用基于组件的架构,尽可能少的使用继承(用C#的话),多通过组合来完成开发。遇到需要数据访问的通用接口,我们可以通过组合的方式来完成,而不是提供一个公共基类接口来继承,只要大家都认识这个公共组件就可以取到数据了。遇到通用的事件派发,我们可以用字符串拼接的方式派发到指定的对象或者更参数组合派发事件到对象身上。框架采用星型架构+事件机制,由于Unity3D没有一个所谓的入口函数,不利于代码跟踪,这样的基础架构能带来很多便利。unity界面扩展能力很强,而且借助CLR(commom language runtime)的反射能力,C#里面开发界面非常容易。做好tag、layer规划,要考虑业务中哪类物体之间需要交互。在代码里面get某个prefab或者GameObject,可以考虑利用界面拖目标过来,这样更加直观,而且也能对抗变化,比如目标名字变了也不怕,而且还能节省代码量。代码这里针对C#,静态强类型面向对象本身就是一个坑,继承带着两个职责,一个是复用代码,一个是接口继承。虽然性能比lua高那么一丢丢,因为性能瓶颈不在业务本身,设计上的问题要严重得多。我认为像lua这种动态语言的元编程才能够贯彻单点真理,通过元编程把真理推导到系统的每一处。让代码始终保持语义,而我认为写业务代码最重要的是保持语义。保持语义的简单有效评判方法就是看这个类中的某个函数,单独看它能否看懂;多个接口能否组成完备的解决方案。静态强类型面向对象语言比较适合需求稳定的严谨的系统开发,而不是游戏开发。容易经过多次的策划需求冲刷,语义很容易扭曲,各种抽象泄露、各种hack。好吧,跑题了。Unity3D容易被破解,因为发布版本的IL是非常容易被反编译的,要做好混淆的考虑。在Unity3D中混淆要考虑对编辑器的影响。复杂类型尽量使用引用类型,值类型反射麻烦,不方便序列化以及做成编辑器。值类型要小心赋值对象是否只是临时对象。引用类型释放之后,引用它的指针会置为null,可以放心使用。foreach、linq、协程慎用,反射只在编辑器中使用。考虑封装Time,方便做暂停。考虑使用调度器来完成功能,而不是在Update自己维护状态,这样做暂停也很容易,代码更清晰,功能更内聚。增量更新要一开始就想清楚。美术Unity3D可以通过扩展编辑器让非技术人员编辑界面来工作,组织好美术资源规格、路径,并且自动生成prefab。游戏场景物件也要规划好逻辑节点,这个也应该通过编辑器扩展好。复杂功能也应该通过编辑器开发给策划微调,特别是可视化比较重要的模块,比如动作调整。制作原型美术,让开发提升开发效率。有统一的约定,比如模型总是中心对齐,角色总是脚部对齐,统一的缩放、统一的动画骨骼命名,资源有统一的路径。支持换装(avatar)要一开始就想清楚。资源加载和优化尽可能早地给出雏形(只是雏形,帮助你对需求的把握,因为这时候你还不知道热点在哪),因为一旦没有规划好异步和资源释放,那么阻塞卡顿和内存飙升那是意料之内的。因为有雏形,那么代码会间接一点,也为改变提供了空间。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量7367点击量7221点击量6711点击量6622点击量6020点击量5610点击量5321点击量5089点击量4690
&2016 Chukong Technologies,Inc.
京公网安备89

我要回帖

更多关于 unity 2d地图编辑器 的文章

 

随机推荐