转载地址:http://blog.csdn.net/yupu56/article/details/53189208

坑1:Unity版本升级,手贱跟着升级,然后项目各种错

解决方案:

新版本先观望一段时间,新版本都有坑的。

坑2:Git做版本更新是,有些Prefab的数据死活不能同步

解决方案:

1.Edit->Project Settings->Editor 设置种打开 meta files 让meta文件和原始文件一起同步

2.Edit/ProjectSetting/Editor设置中AssetSerialization改为ForceText就行,但是我们的项目并没有解决问题,就那两个Prefab至今无解。

坑3:Mac系统上无法双开Unity

解决方案:

笨的办法呢,装两个不同版本,或者装完,拷贝一份。好一点的办法用命令行再打开一个。在好一点的,写一个shell脚本,调用命令行的打开Unity命令,已完美解决,在我另一篇文章中。

坑4:Unity打包到Android和IOS端后的StreamingAsset路径问题

string StreamingAssetPath

{
get
{
string filePath =

#if UNITY_ANDROID && !UNITY_EDITOR

“jar:file://” + Application.dataPath + “!/assets/” + flodername + “/”;

#elif UNITY_IPHONE && !UNITY_EDITOR

Application.dataPath + “/Raw/”;

#elif UNITY_STANDALONE_WIN || UNITY_EDITOR

“file://” + Application.dataPath + “/StreamingAssets” + “/” + flodername + “/”;

#else

string.Empty;

#endif

return filePath;
}

}
坑5:做UI的时候,背景图片太多,大图太多。

解决方案:切记做UI的时候美术给你什么图就用什么图,需要裁剪的,复用的,9空格的,作为技术支撑,要告诉美术新手,图该怎么做。不能怎么做。

坑6:对Unity操作不当,或者导入资源过大时,导致Unity崩溃

解决方案:当电脑内存不够是,Unity容易出现问题,甚至Crash。建议换个电脑

坑7:后期优化项目完后,没有效果,适得其反

解决方案:优化是需要把握一个度的,比如优化分为CPU,GPU和内存,我们可以牺牲内存减少CPU的调用,也可以增加GPU的消耗,减少内存。也可以将DrawCall减少到极致。但是凡事有个度,在优化的之间需要平衡各项。比如当CPU优化过度后,必定增加了GPU和内存的消耗,可能有戏不会流畅反而更卡。尤其批处理功能,不能滥用。因此:

1.内存可以牺牲,但不能太大,为了保证大多数机型的正常运行

2.CPU优化中DrawCall可以减少,但不能太多,适量减少,要不然必定增加内存。

坑8:遮挡剔除开了没用

解决方案:需要根据不同的场景,不同的游戏,修改遮挡的参数设置,默认的不适用于任何场景。

坑9:Animation占用内存较大

解决方案:合理使用,等待Unity的官方优化。

坑10:材质属性修改,导致内存增加

解决方案:当修改材质的某个参数时,Unity会为我们从新New一个,所以当需要不同参数的材质时,最好先创建好,避免在update中更新材质的某参数。

坑11:Material深拷贝问题

解决方案:Material a=b;会深度拷贝,需要注意释放的问题。或者使用SharedMatetial

坑12:图片格式选择TrueColor和16Bit,非常占内存

解决方案:

1.尽量避免使用TrueColor,比较占内存。

2.16bit虽然会吧像素压缩一般,但是导致像素不清,亲测还不如Compress

3.尽量选择Compress,Unity会对其进行压缩并且清晰度可以。亲测。

4.以上选项没能满足你,可以选择图片的FilterMode试试看。详细自己去查吧。

坑13:DestroyImmediately的使用

解决方案:

1.DestroyImmediately会立刻释放,占用系统资源,可以改为Destroy等系统空闲时统一释放。

2.Destroy也要尽量少用,因为创建和销毁都会占用系统资源。鼓励使用对象池。

3.Destroy操作很保守。例如,销毁mesh时,并不会销毁material、texture,更不会清理脚本资源。解决方案,合理做法是依赖很卡的UnloadUnusedAssets、LoadScene清理无引用资源(另注意前者是异步的),或者Bundle.Unload(true),这些方案各有限制。

坑14:System.GC的使用

解决方案:

1.Unity的堆和.net的堆不是同一个。GC释放的是.net的堆内存,所以有时候并不能达到我们的目的。而且GC调用多了也会增加CPU的消耗。

2.Unity的释放使用Resources.UnloadUnusedAsset.

坑15:欧拉角的使用。

解决方案:

1.首先欧拉角的表示较容易理解,但是弊端是效率低和万向锁。

2.可以使用四元数来代替,虽然不容易理解,但可以从欧拉角转换过来。

坑16:xxx.dll明明导入了,系统却提示没有

解决方案:

1.确认导入的是32位还是64位是否跟机型匹配。是否导入重复。

2.检查BuildSetting中API Compatibility Level选择的是.Net2.0还是.Net2.0 Subset,改为前者试试。如果是WebPlayer平台,无法选择.Net2.0

坑17:粒子系统的滥用

解决方案:粒子系统做出来的东西很炫,但是好东西不能多用。用多了系统受不了的。

坑18:Unity突然崩溃,场景没保存,Prefab没保存

解决方案:写一个编辑器脚本,在Unity意外退出时自动保存。详见我的另一篇文章

坑19:AssetBundle的使用

解决方案:

1.打包AssetBundle的资源依赖,以及解压时的资源依赖。需要自己捋清楚,否则坑死你。

2.升级到Unity5.0后,虽然自带了打包系统,但是依然需要你自己捋清依赖关系。

3.解压和使用完Asset后,记得解压的文件还在内存中,需要你去释放。

4.有些文件避免重复下载,可以使用LoadFromCache方法,但是它也有坑,用的时候小心点。

坑20:打包到移动端的项目打不开,不知道什么错

解决方案:

1.苹果端,可以在Xcode运行程序,然后看错误在那一行报错

2.安卓端,可以到处Android项目在AndroidStudio或Eclipse运行,看日志,也可以使用SDK自带的adb logcat -s Unity 功能来输出日志查询。

坑21:场景好好的,但是Scene视图却什么都看不到了

解决方案:一个同事发现这个现象,刚开始我也熟手无策,场景中物体明明在,但就是看不见。检查下Unity右上角的Layers选项,是否点击了某个层的关闭

坑22:UGUI中按钮无响应

解决方案:

1.检查按钮上方是否有图片或Panel等遮挡,屏蔽了按钮事件。

2.检查EventSystem是否不小心删掉了。

坑23:UGUI上加粒子特效的层级问题

解决方案:可以设置粒子的画布深度。或者新建画布。

坑24:Unity下使用中文名和路径

解决方案:

1.资源导入时,有中文必定出错。资源导出时中文路径不出错。

2.图片和Prefab可以使用中文,但有出错的可能性。

坑25:Unity自带脚本编辑器MonoBehavior的乱码问题

解决方案:在MonoBehavior和VS之间切换时容易出现乱码,暂无好的解决方案。最好选一个使用别乱换。

坑26:模型师的做动作导出到Unity就报错。

解决方案:让模型师检查骨骼的名字是否重复或写错。让其按照一定的规则命名。

坑27:项目越写越凌乱

解决方案:

1.重构是每时每刻进行的,不是到了最后阶段花几个月的时间进行重构。如果感觉代码已经有了坏味道,就立刻去重构,否则以后就更懒得去重构了。导致代码越来越烂。(推荐《重构》)

2.严格遵循MVC模式,组合复用等设计原则进行框架的设计。(《设计模式》)

3.单例模式不能滥用,代码之间的耦合度会增加。

4.代码的命名要有规则,养成习惯。推荐谷歌命名法和驼峰命名法。

5.多看别人的代码结构,学以致用。

Unity3D的一些坑相关推荐

  1. unity3d所要知道的基础知识体系大纲,可以对照着学习,不定期更新

    本文献给,想踏入3D游戏客户端开发的初学者. 毕业2年,去年开始9月开始转作手机游戏开发,从那时开始到现在一共面的游戏公司12家,其中知名的包括搜狐畅游.掌趣科技.蓝港在线.玩蟹科技.天神互动.乐元素 ...

  2. unity3d开发实战《啪啪三国》技术详解

    http://www.unitymanual.com/thread-13031-1-1.html      去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重 ...

  3. unity3d开发实战《啪啪三国》技术详解!

    unity3d开发实战<啪啪三国>技术详解!  去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及 ...

  4. (转)火溶CEO王伟峰:Unity3D手机网游开发

    今天看到这篇文章,感觉很不错,尤其是那句"Unity3D的坑我觉得最严重的坑就是没有懂3D的程序员,把Unity当成Office用". 转自http://blog.csdn.net ...

  5. 火溶CEO王伟峰:Unity3D手机网游开发

    http://www.gamelook.com.cn/2013/11/135467 GameLook报道 / 11月2日下午,GameLook游戏开放日活动在上海正式举行,此次会议gamelook邀请 ...

  6. 关于Unity3D手机网游开发一些小看法

    它的知识技能和职责,我就不仔细说了,说细了有一点像招聘启示.他的主要职责虽然负责技术,但是也给产品决策和方向提供一些决策.他最主要的考核指标,就是经验很重要,最好主导或参与过一款网络游戏的开发.举个例 ...

  7. cocoscreator初学笔记001

    cocoscrestor初学笔记 由于工作原因需要学习cocoscreator基础进行简单的游戏制作,也因为时间原因,之前自学的unity3d也放置了许久,等有空了才能填之前unity3d学习的坑了. ...

  8. unity面试之美(四)

    1.面试方式:所有面试,只有3家有面试题,蓝港是其中之一,题量2-4页不等:其他都是1对1,2对1,或者3对1直接面试:主要考C#.unity基础,大公司问的不难,但问得深,基础必须扎实. 2.3D图 ...

  9. 《啪啪三国》技术详解

    <啪啪三国>技术详解 1.引擎程序员 说到Unity3D我这里有一个引擎程序员的说法,他要懂3D引擎.你怎么判断这个引擎程序员合格不合格呢?你问他看什么书?他如果说我在看<21天学会 ...

最新文章

  1. 非常量引用的初始值必须为左值解决方式
  2. angular指令:tm.tags添加/删除标签
  3. linux 打包 tar
  4. 安装Orcale 10g SP3时报oui.exe异常错误
  5. Geary 0.13.0 发布,GNOME 3 Email 客户端应用
  6. LeetCode 2195. 向数组中追加 K 个整数(贪心)
  7. 传统品牌vs新消费品牌社交营销差异化分析报告
  8. SQL优化:紧急情况下提高SQL性能竟是这样实现的!(文中有惊喜)
  9. leetcode力扣49. 字母异位词分组
  10. 七天LLVM零基础入门(Linux版本)------总结
  11. 数据库学习(Oracle)
  12. python plot方法的使用_Python bokeh.plotting.figure.step()用法及代码示例
  13. UE4 WebUI 4.26下载
  14. 博士德霸道软件_霸道+网络版7.0
  15. 【作业4】朗途职业规划测试
  16. Android实现截屏功能(已适配Android11)
  17. IPy模块。。ip范围求交集。。
  18. 有限状态自动机(FSM)的一些逻辑
  19. 抓包工具哪些好,来看这里就够了.....
  20. 超链接 a标签 虚线框 虚线 去除虚线框

热门文章

  1. php mysqli::close()
  2. vue项目中开启Eslint碰到的一些问题及其规范
  3. [Android]第四次作业
  4. 更改Eclipse Ctrl+1 的Idea 方式
  5. luogu3233 世界树 (虚树)
  6. POJ3686 The Windy's 【费用流】*
  7. WPF richTextBox 滚动到某项
  8. Node.js HTTPS
  9. GCD -- 倒计时
  10. 神经网络(1)--Non-linear hypotheses,为什么我们要学习神经网络这种算法来处理non-linear hypotheses...