Unity编辑器交换游戏物件时崩溃,构建后运行正常求助
问题解决方案拆解
一、编辑器拖拽崩溃问题(仅Editor环境,设备运行正常)
- 锁定可疑脚本:在Inspector面板里禁用
Assets/Scripts/Board.cs脚本,再测试拖拽交换操作。如果不再崩溃,说明问题出在该脚本的拖拽逻辑中。 - 定位崩溃节点:在拖拽相关的关键代码段(比如
OnMouseUp、拖拽结束回调函数)添加日志打印,缩小排查范围:
运行后查看控制台最后一条日志,就能明确崩溃前执行到哪一步。void OnMouseUp() { Debug.Log("进入鼠标松开回调"); // 你的交换逻辑代码 Debug.Log("交换逻辑执行完成"); } - 检查Editor专属逻辑:确认代码中是否使用了
UnityEditor命名空间下的API,且未加#if UNITY_EDITOR条件判断。这类代码在设备上会被忽略,但在Editor中可能引发崩溃。 - 排查对象引用问题:检查松开鼠标时是否访问了已销毁的对象、存在数组越界或空指针引用——由于行尾不一致可能导致报错行号不准,控制台无法显示错误,需手动排查这类常见问题。
二、解决Board.cs行尾不一致警告
- 用VS Code或Sublime Text打开
Assets/Scripts/Board.cs; - VS Code右下角会显示当前行尾格式(如
CRLF或LF),点击后选择Convert to LF(Mac/UNIX)或Convert to CRLF(Windows),统一文件行尾格式; - 保存文件后回到Unity,等待脚本重新编译,警告即可消失。这一步必须完成,否则后续报错的行号会失真,影响问题排查。
三、解决打开项目自动弹出Package Manager和Build Settings窗口
- 点击Unity顶部菜单
Window > Layouts > Reset to Factory Settings,重置编辑器布局; - 手动关闭Package Manager和Build Settings窗口;
- 关闭Unity项目,下次从Unity Hub打开时就不会自动弹出这两个窗口。
内容的提问来源于stack exchange,提问作者buolou
相关产品推荐
相关产品推荐

