Example #1
0
    public T PushCtrl <T>(KSKitConfigure configure) where T : KSWindow
    {
        if (canvas_stack.Count >= KSLayer.maxui)
        {
            return(null);
        }

        //1、更新标识Key
        if (configure.is_custom_key == false)
        {
            configure.UpdateKey(typeof(T).Name);
        }

        //2、获取Canvas
        KSCanvas ui_canvas = canvas_manager.InstantiateUICanvas <T>(camera_manager.ui_camera, configure, canvas_stack.Count);

        //3、页面组件
        T prefab_component = KSWindow.CreateWindow <T>();

        //4、导航组件
        KSNavigatorBar navigator_bar_component = null;

        switch (configure.bar_type)
        {
        case KSNavigatorBarType.nomarl:
            navigator_bar_component = navigator_bar_manager.InstantiateNavigatorBar();
            navigator_bar_component.UpdateConfigure(configure);
            prefab_component.navigator_bar = navigator_bar_component;
            break;

        case KSNavigatorBarType.popup:
            break;
        }

        //5、设置父物体
        prefab_component.transform.SetParent(ui_canvas.transform, false);
        if (navigator_bar_component != null)
        {
            navigator_bar_component.transform.SetParent(ui_canvas.transform, false);
        }

        //6、入栈
        canvas_stack.Push(ui_canvas);

        //7、更新CameraCullingMask
        camera_manager.UpdateCameraCullingMask(canvas_stack);

        return(prefab_component);
    }