有时候因为代码问题,导致Unity编辑器运行时直接崩溃,看不到Console输出的log信息。那如何定位造成编辑器崩溃的原因呢?我总结了几种方法
第一,查看编辑器log。
Unity官方文档-LogFiles
,写的很清楚。
Windows上,编辑器log在C:\Users\username\AppData\Local\Unity\Editor\Editor.log
Mac上,log在~/Library/Logs/Unity/Editor.log
然而,从我的使用情况来看,很多时候编辑器崩溃并未在Editor.log中生成崩溃信息。那怎么办呢?
第二,Build出debug版本的应用,然后运行查看log。
在Windows上,应用的appname_Data目录下,有一个output_log.txt,记录了详细的log信息。
Mac上,log还在~/Library/Logs/Unity/Player.log。
iOS上,可以直接在XCode控制台看到log。
Android上,DDMS也有详细的log信息。
第三,针对iOS或Android APP。可以接入腾讯的
Bugly
,在web后台查看应用日志,非常方便。如果不想接Bugly SDK,自己注册Application.logMessageReceived,然后把日志输出到方便查看的地方也可以,比如我在使用Bugly之前会把error和exception级别的log通过http发到我自己搭建的服务器上。
window系统下路径 C:\Users\Administrator\AppData\Local\Unity\Editor\Editor.log
mac系统下路径~/Library/Logs/Unity/Editor.log
可以
查
询大部分
unity3d
编辑器
崩溃
信息。
2.移动平台真机
查
询crash
ios 可以直接通过xcode ,
查
询unity debug输出信息。
android可以通过adb
查
询log,adb是androidSDK的一个工具,位置就在sdk目录下的platfor...
然后找Unity的NDK目录下的arm-linux-androideabi-addr2line(对应arm v7),或者aarch64-linux-android-addr2line(对应 arm 64) 具体用哪个取决于手机是哪个框架。
对应库选择自己AS编译出来的库,或者Unity导出的符号表解压。
相信很多朋友都碰到过,Unity做着做着,正Happy的时候突然
崩溃
,特别是场景中有很多操作没有保存时,那内心是无比
崩溃
的!
接下来这个小技巧呢,就是用来拯救我们无比
崩溃
的内心的。
当Unity
崩溃
时,切记千万先别重新启动Unity。(因为一旦重新启动将会清除上一次的缓存数据,也就没有办法再找到并恢复了!)
找到工程所在文件夹,定位到Temp/_Backupscenes/0.backup,将其中的0.backup复制出来放到Unity的Assets目录中,并且更名为xx.unity。(重点是改成.unity
编辑器
意外
崩溃
首先,
Unity3D
崩溃
后不要急着打开
Unity3D
,先去你的工程目录下找到/Temp/_Backupscenes/目录。这个目录下会有一个*.backup的文件。
复制这个文件到工程里改后缀为.unity,这是一个场景文件,在工程打开就是
崩溃
时的场景了
Unity在
编辑器
处于播放状态时修改脚本代码或替换托管dll等操作时,轻则报错,重则卡死
崩溃
。最终,为了避免由于此导致的问题,采取了一种回避的手段:通过Editor脚本方式检测是否在播放状态时触发了脚本编译,是的话立即停止播放
https://docs.
unity3d
.com/cn/2017.2/ScriptReference/EditorApplication.html
EditorApplication.delayCall 在所有检视面板更新之后调用一次的委托。
EditorApplication.
有以下几种解决方法
1.非要使用Unity组件,导致的Unity组件
崩溃
,每日备份,频繁备份。
2.放弃使用相关的 代码 的 Unity 组件(模型组件貌似不受影响),相关的功能尽量使用Unity 自带的功能。(例如,NGUI 的相关功能可以使用 UGUI 代替)