Пример #1
0
    protected virtual void init()
    {
        // 必须先初始化配置文件
        int count = mFrameComponentInit.Count;

        for (int i = 0; i < count; ++i)
        {
            try
            {
                DateTime start = DateTime.Now;
                mFrameComponentInit[i].init();
                UnityUtility.logInfo(mFrameComponentInit[i].getName() + "初始化消耗时间:" + (DateTime.Now - start).TotalMilliseconds);
            }
            catch (Exception e)
            {
                UnityUtility.logError("init failed! :" + mFrameComponentInit[i].getName() + ", info:" + e.Message + ", stack:" + e.StackTrace);
            }
        }
        System.Net.ServicePointManager.DefaultConnectionLimit = 200;
        mEnableKeyboard = (int)FrameBase.mFrameConfig.getFloat(GAME_FLOAT.ENABLE_KEYBOARD) > 0;
        ApplicationConfig appConfig = FrameBase.mApplicationConfig;

        QualitySettings.vSyncCount = (int)appConfig.getFloat(GAME_FLOAT.VSYNC);
        int width      = (int)appConfig.getFloat(GAME_FLOAT.SCREEN_WIDTH);
        int height     = (int)appConfig.getFloat(GAME_FLOAT.SCREEN_HEIGHT);
        int fullScreen = (int)appConfig.getFloat(GAME_FLOAT.FULL_SCREEN);

#if !UNITY_EDITOR && (UNITY_ANDROID || UNITY_IOS)
        // 移动平台下固定为全屏
        fullScreen = 1;
#endif
        Vector2 screenSize = UnityUtility.getScreenSize();
        if (fullScreen == 1)
        {
            width  = (int)screenSize.x;
            height = (int)screenSize.y;
        }
        Screen.SetResolution(width, height, fullScreen == 1 || fullScreen == 3);
#if !UNITY_EDITOR && UNITY_STANDALONE_WIN
        // 设置为无边框窗口,只在Windows平台使用
        if (fullScreen == 2)
        {
            // 无边框的设置有时候会失效,并且同样的设置,如果上一次设置失效后,即便恢复设置也同样会失效,也就是说本次的是否生效与上一次的结果有关
            // 当设置失效后,可以使用添加启动参数-popupwindow来实现无边框
            long curStyle = User32.GetWindowLong(User32.GetForegroundWindow(), CommonDefine.GWL_STYLE);
            curStyle &= ~CommonDefine.WS_BORDER;
            curStyle &= ~CommonDefine.WS_DLGFRAME;
            User32.SetWindowLong(User32.GetForegroundWindow(), CommonDefine.GWL_STYLE, curStyle);
        }
#endif
        // NGUI
#if USE_NGUI
        GameObject nguiRootObj = UnityUtility.getGameObject(null, CommonDefine.NGUI_ROOT);
        UIRoot     nguiRoot    = nguiRootObj.GetComponent <UIRoot>();
        nguiRoot.scalingStyle = UIRoot.Scaling.Constrained;
        nguiRoot.manualWidth  = width;
        nguiRoot.manualHeight = height;
        GameCamera camera = FrameBase.mCameraManager.getUICamera(false);
        OT.MOVE(camera, new Vector3(0.0f, 0.0f, -height * 0.5f / MathUtility.tan(camera.getFOVY(true) * 0.5f)));
        GameCamera blurCamera = FrameBase.mCameraManager.getUIBlurCamera(false);
        OT.MOVE(blurCamera, new Vector3(0.0f, 0.0f, -height * 0.5f / MathUtility.tan(blurCamera.getFOVY(true) * 0.5f)));
#endif
        // UGUI
        GameObject    uguiRootObj       = UnityUtility.getGameObject(null, CommonDefine.UGUI_ROOT);
        RectTransform uguiRectTransform = uguiRootObj.GetComponent <RectTransform>();
        uguiRectTransform.offsetMin = -screenSize * 0.5f;
        uguiRectTransform.offsetMax = screenSize * 0.5f;
        uguiRectTransform.anchorMax = Vector2.zero;
        uguiRectTransform.anchorMin = Vector2.zero;
        GameCamera camera = FrameBase.mCameraManager.getUICamera(false);
        if (camera != null)
        {
            OT.MOVE(camera, new Vector3(0.0f, 0.0f, -height * 0.5f / MathUtility.tan(camera.getFOVY(true) * 0.5f)));
        }
        GameCamera blurCamera = FrameBase.mCameraManager.getUIBlurCamera(false);
        if (blurCamera != null)
        {
            OT.MOVE(blurCamera, new Vector3(0.0f, 0.0f, -height * 0.5f / MathUtility.tan(blurCamera.getFOVY(true) * 0.5f)));
        }
        // 设置默认的日志等级
#if UNITY_EDITOR
        UnityUtility.setLogLevel(LOG_LEVEL.LL_NORMAL);
#else
        UnityUtility.setLogLevel((LOG_LEVEL)(int)FrameBase.mFrameConfig.getFloat(GAME_FLOAT.LOG_LEVEL));
#endif
    }