【发布时间】:2019-05-21 20:49:35
【问题描述】:
我已成功构建和运行 Unity 2D 游戏,但在我的一次操作中开始收到蓝屏。具体来说,当我关闭一个弹出窗口并删除其所有子游戏对象时,整个游戏屏幕变为深蓝色(主摄像头的默认背景颜色)。如果您单击右侧区域,游戏的音乐仍然会播放并且点击仍然会记录(我仍然可以按后退按钮,只是看不到它)。
如果我删除 1 个游戏对象,则不会出现此问题。但是一旦我必须移除 2 个游戏对象,整个屏幕就会变成蓝色。
这是我删除我的游戏对象的功能,以防万一它有帮助,它在实际正确删除游戏对象时非常有效(要删除的游戏对象是从预制件创建的)。我认为问题可能出于某种原因与相机有关,但我不知道为什么会在此功能上发生。
public void Remove(int index)
{
float toggleWidth = toggle.GetComponent<RectTransform>().sizeDelta.x;
DestroyImmediate(scrollSnap.pagination.transform.GetChild(scrollSnap.NumberOfPanels - 1).gameObject);
scrollSnap.Remove(index);
scrollSnap.pagination.transform.position += new Vector3(toggleWidth / 2f, 0, 0);
}
我没有在控制台中收到任何错误或警告。移除多个 GameObject 时只是蓝屏
编辑:
原来我的主 Canvas 的 planeDistance 正在从 100 更改为 3200。我仍然不知道为什么会发生这种更改...但是对于其他有类似问题的深蓝色的人屏幕出现在他们游戏的中间或开始时,请在 Inspector 中检查您的画布和相机的值。简单地控制 planeDistance 对我有用!
【问题讨论】:
-
这可能与相机有关,我假设您正在使用正交相机进行 2D 游戏。运行游戏并将 unity 置于 3D 模式并查看相机相对于您的对象的位置
-
感谢 Tom,我是 Unity 的新手,不认为这是一个解决方案。我注意到画布的平面距离发生了巨大变化,但我仍然不确定为什么它会从上面的代码中改变。现在调查一下
标签: visual-studio unity3d