예제 #1
0
 public static FreeUIUtil GetInstance()
 {
     if (_instance == null)
     {
         _instance = new FreeUIUtil();
     }
     return(_instance);
 }
예제 #2
0
        public void Initial(params object[] ini)
        {
            if (ini[0] is string)
            {
                var ss = (ini[0] as string).Split("_");
                if (ss.Length == 2)
                {
                    _colum = int.Parse(ss[0]);
                    _row   = int.Parse(ss[1]);

                    _deltaY = _height / _row;
                }
            }
            else if (ini[0] is SimpleProto)
            {
                var simpleProto = (SimpleProto)ini[0];
#pragma warning disable CS0219 // The variable 'lCount' is assigned but its value is never used
                var lCount = 0;
#pragma warning restore CS0219 // The variable 'lCount' is assigned but its value is never used
                for (var j = 0; j < _row; j++)
                {
                    var subList = new List <IFreeComponent>();
                    for (var i = 0; i < simpleProto.Ks.Count - 1; i++)
                    {
                        var newPo = FreeUIUtil.GetInstance().GetComponent(simpleProto.Ks[i + 1]);

                        var control = newPo.ToUI();

                        list.Add(newPo);
                        control.gameObject.transform.parent = sprite.transform;
                        subList.Add(newPo);

                        newPo.SetPos(this, simpleProto.Fs[i * 2], simpleProto.Fs[i * 2 + 1] + _deltaY * j,
                                     simpleProto.Ins[i * 4], simpleProto.Ins[i * 4 + 1],
                                     simpleProto.Ins[i * 4 + 2], simpleProto.Ins[i * 4 + 3]);
                        newPo.Initial(simpleProto.Ss[i * 3 + 2], simpleProto.Ss[i * 3 + 3]);
                        newPo.EventKey = simpleProto.Ss[i * 3 + 4];
                    }

                    llist.Add(subList);
                }
            }
        }
예제 #3
0
        private SimpleFreeUI Build(SimpleProto simpleProto)
        {
            //var canvas = SceneManager.GetActiveScene().GetRootGameObjects().FirstOrDefault(x => x.name == "Canvas");
            //if (canvas == null)
            //{
            //    canvas = UnityUiUtility.CreateCanvas(Screen.width, Screen.height);
            //    FreeLayoutConverter.FullScreen(canvas.GetComponent<RectTransform>());
            //}

            //canvas = UiCommon.UIManager.GetLayer(UIComponent.UI.UILayer.Base);

            //EventSystem.current = canvas.GetComponent<EventSystem>();
            //var freeUI = canvas.transform.Find("FreeUI");
            //if (freeUI == null)
            //{
            //    var freeUIObj = new GameObject("FreeUI");
            //    freeUIObj.transform.parent = canvas.transform;
            //    var rectTransform = freeUIObj.AddComponent<RectTransform>();
            //    //rectTransform.anchorMin = new Vector2(0, 1);
            //    //rectTransform.anchorMax = new Vector2(0, 1);
            //    FreeLayoutConverter.FullScreen(rectTransform);
            //    //rectTransform.sizeDelta = new Vector2(Screen.width, Screen.height);

            //    freeUIObj.AddComponent<CanvasRenderer>();

            //    freeUI = freeUIObj.transform;
            //}

            int layer = simpleProto.Ks[0];

            Transform freeUI = UiCommon.UIManager.GetLayer((UIComponent.UI.UILayer)layer).transform;

            var root = new GameObject(simpleProto.Ss[0]);

            string parent = simpleProto.Ss[1];

            root.transform.SetParent(freeUI, false);

            GameObject parentObj = null;

            if (!string.IsNullOrEmpty(parent))
            {
                parentObj = GameObject.Find(parent);
                if (parentObj != null)
                {
                    root.transform.SetParent(parentObj.transform, false);
                }
            }

            //root.transform.localPosition = Vector3.zero;

            RectTransform rt = root.AddComponent <RectTransform>();

            root.AddComponent <CanvasRenderer>();

            var ui = root.AddComponent <SimpleFreeUI>();

            ui.Key      = simpleProto.Ss[0];
            ui.Visible  = simpleProto.Bs[0];
            ui.AtBottom = simpleProto.Bs[1];

            FreeLayoutConverter.FullScreen(rt);

            for (var i = 0; i < simpleProto.Ks.Count - 1; i++)
            {
                var newPo = FreeUIUtil.GetInstance().GetComponent(simpleProto.Ks[i + 1]);
                if (newPo == null)
                {
                    Logger.ErrorFormat("Free component not exist {0}", simpleProto.Ks[i + 1]);
                    continue;
                }
                ui.AddComponent(newPo);
                newPo.SetPos(ui, simpleProto.Fs[i * 2], simpleProto.Fs[i * 2 + 1],
                             simpleProto.Ins[i * 4], simpleProto.Ins[i * 4 + 1],
                             simpleProto.Ins[i * 4 + 2], simpleProto.Ins[i * 4 + 3]);

                newPo.Initial(simpleProto.Ss[i * 3 + 2], simpleProto.Ss[i * 3 + 3]);
                newPo.EventKey = simpleProto.Ss[i * 3 + 4];
                if (newPo is FreeListComponent)
                {
                    newPo.Initial(simpleProto.Ps[i]);
                }
            }

            ui.OrignalHeight = ui.Height;
            ui.OrignalWidth  = ui.Width;
            ui.OrignalX      = ui.X;
            ui.OrignalY      = ui.Y;

            ui.gameObject.GetComponent <RectTransform>().localScale = new Vector3(1, 1, 1);

            return(ui);
        }
예제 #4
0
 public void Show(SimpleProto sp)
 {
     _showStyle   = FreeUIUtil.GetInstance().GetShowStyle(sp);
     _totalTime   = sp.Ks[2];
     _currentTime = 0;
 }