首先,我说的是 SetPass 调用,我理解它是绘制调用。

我有一个空的 GameObject,在我的游戏中用作相机目标。我将它定位在我的角色上方,当它达到 x 高度时,相机会向上移动。

启用相机目标后,我收到大约 60 个 SetPass 调用。当我禁用它时,我得到大约 30。

为什么这个简单的对象会产生如此多的 SetPass 调用?

这是启用空游戏对象的屏幕截图:

这是未启用 GameObject 的屏幕截图:

这是空的游戏对象:

这是我引用空 GameObject(cameraTarget) 的地方:

无效固定更新(){

if (cameraTarget != null){
    if (cameraTarget.transform.position.y > thisTransform.position.y) {
        thisTransform.position = new Vector3 (0, Mathf.SmoothDamp (thisTransform.position.y, cameraTarget.transform.position.y, ref velocity.y, smoothTime), 0);
    }
}

}

当我在游戏过程中禁用空的 GameObject 时,我的游戏运行良好,即使它被禁用,相机仍然跟随空的 GameObject 并且我获得的 SetPass 调用更少......很奇怪。

编辑:

附加到我的 Empty GameObject 的标签图标导致绘制调用增加:

编辑:

我在游戏窗口中禁用了“Gizmos”,它删除了我所有场景中的绘制调用。我想这只是在编辑器中运行游戏时的问题。

最佳答案

Unity 5 有一个简洁的功能,称为帧调试器。您可以捕获帧并查看到底发生了什么,请在此处查看更多信息 http://blogs.unity3d.com/2014/07/29/frame-debugger-in-unity-5-0/

关于c# - 为什么我从 Unity3D 场景中的空游戏对象收到 30 个绘制调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29399745/

10-11 21:33