Game Center正在擦除EAGLView中的纹理

本文关键字:纹理 EAGLView 擦除 Center Game | 更新日期: 2023-09-27 17:58:30

我在MonoTouch中的Game Center集成遇到问题,Game Center登录视图正在加载,但它正在擦除当前加载的任何纹理。如果我注释掉PresentModalViewController行,那么游戏中心登录表单不会出现,但已经加载的纹理会留在内存中并工作。我使用以下代码来显示游戏中心视图:

    GKLocalPlayer.LocalPlayer.AuthenticateHandler = (ui, ErrorCode) =>
        {
            if (ui != null) {
                Debug.WriteLine ("GK Not authenticated, presenting login");
                PresentModalViewController (ui, true);
            } else {
                Debug.WriteLine ("GK Checking Authentication");
                bool authenticated = GKLocalPlayer.LocalPlayer.Authenticated;
                if (authenticated)
                    Debug.WriteLine ("Game Center Authenticated. " + GKLocalPlayer.LocalPlayer.DisplayName);
                else
                    Debug.WriteLine ("Game Center Not Authenticated. " +  GKLocalPlayer.LocalPlayer.PlayerID + " " + ErrorCode.ToString());
            }
        };

以前有人见过这个问题吗?如果有,显示游戏中心登录页面,但保留加载的纹理的解决方案是什么?

Game Center正在擦除EAGLView中的纹理

找到了这个问题的答案,它与MonoTouch OpenTK示例应用程序建议在ViewWillDisappear事件中销毁渲染缓冲区有关,该事件发生在GameCentre窗口出现时。当"缓冲区"被破坏时,纹理也随之而去,因此这里的解决方案是不在ViewWillDisappear事件中破坏渲染缓冲区(随后,不要在ViewWillAppear中重新创建它)。