Пример #1
0
        /// <summary>
        /// 在指定模块层弹出一个新的界面。
        /// </summary>
        /// <param name="moduleLayer">模块分层</param>
        /// <param name="path">模块所对应的资源路径</param>
        /// <param name="callback">创建成功后的回调</param>
        public static void Popup(ModuleLayer moduleLayer, string path, Action <RectTransformLayer> callback)
        {
            UILayerGroup layerGroup;

            if (!mLayerMap.TryGetValue(moduleLayer, out layerGroup))
            {
                Debug.Log("Undefined module layer -> " + moduleLayer);
                return;
            }
            layerGroup.Add(layer =>
            {
                //处理场景遮挡通知
                if (layerGroup.Layers.Count > 1)
                {
                    var lowerLayer = (RectTransformLayer)layerGroup.Layers[layerGroup.Layers.Count - 2];
                    var view       = lowerLayer.Root.GetComponent <ModuleView>();
                    view.OnOverlay(true);
                }

                //处理提示遮挡通知
                if (moduleLayer == ModuleLayer.Tip && checkIsNewOverlayer(layer))
                {
                    notifyTopLayerOverlay(ModuleLayer.Scene, true);
                }

                //图层创建成功回调
                var rectTransformLayer = (RectTransformLayer)layer;
                if (callback != null)
                {
                    callback(rectTransformLayer);
                }
            }, mFactory, path);
        }
Пример #2
0
        private static void notifyTopLayerOverlay(ModuleLayer layer, bool isOverlay)
        {
            var topLayer = (RectTransformLayer)mLayerMap[layer].Layers.LastOrDefault();

            if (topLayer != null)
            {
                var sceneView = topLayer.Root.GetComponent <ModuleView>();
                sceneView.OnOverlay(isOverlay);
            }
        }