コード例 #1
0
        public static GameObject FindUIRoot()
        {
            GameObject root = GameObject.Find("UIRoot");

            if (root != null && root.GetComponent <UIRoot>() != null)
            {
                return(root);
            }
            LDebugger.LogError(LOG_TAG, "FindUIRoot() UIRoot is not exist");
            return(root);
        }
コード例 #2
0
ファイル: UIManager.cs プロジェクト: Allenzwli/LSnaker
        private T Open <T>(string name, object arg = null) where T : UIPanel
        {
            T ui = Load <T>(name);

            if (ui != null)
            {
                ui.Open(arg);
            }
            else
            {
                LDebugger.LogError(this.GetType().ToString(), "Open() Failed! Name:{0}", name);
            }
            return(ui);
        }
コード例 #3
0
ファイル: ViewFactory.cs プロジェクト: Allenzwli/LSnaker
        public static void CreateView(string resPath, string resDefaultPath, EntityObject entity, Transform parent = null)
        {
            ViewObject obj = null;

            //
            string recycleType  = resPath;
            bool   userRecycler = true;

            obj = mRecycler.Pop(recycleType) as ViewObject;
            if (obj == null)
            {
                userRecycler = false;
                //TODO
                obj = InstanceViewFromPrefab(recycleType, resDefaultPath);
            }
            else
            {
                if (!obj.gameObject.activeSelf)
                {
                    obj.gameObject.SetActive(true);
                }

                if (parent != null)
                {
                    obj.transform.SetParent(parent, false);
                }
                else
                {
                    obj.transform.SetParent(mViewRoot, false);
                }

                obj.CreateInFactory(entity, recycleType);

                if (EnableLog && LDebugger.EnableLog)
                {
                    LDebugger.Log(LOG_TAG, "CreateView() {0}:{1}->{2}:{3},UseRecycler :{4}",
                                  entity.GetType().Name,
                                  entity.GetHashCode(),
                                  obj.GetRecycleType(),
                                  obj.GetInstanceID(),
                                  userRecycler);
                }
                if (mObjectsMap.ContainsKey(entity))
                {
                    LDebugger.LogError(LOG_TAG, "CreateView() 不应该存在重复的映射");
                }
                mObjectsMap[entity] = obj;
            }
        }
コード例 #4
0
ファイル: ViewFactory.cs プロジェクト: Allenzwli/LSnaker
        private static ViewObject InstanceViewFromPrefab(string prefabName, string defaultPrefabName)
        {
            GameObject prefab = Resources.Load <GameObject>(prefabName);

            if (prefab == null)
            {
                prefab = Resources.Load <GameObject>(defaultPrefabName);
            }
            GameObject go       = GameObject.Instantiate(prefab);
            ViewObject instance = go.GetComponent <ViewObject>();

            if (instance == null)
            {
                LDebugger.LogError(LOG_TAG, "InstanceViewFromPrefab() prefab=" + prefabName);
            }
            return(instance);
        }
コード例 #5
0
ファイル: UIManager.cs プロジェクト: Allenzwli/LSnaker
        private T Load <T>(string name) where T : UIPanel
        {
            T ui = UIRoot.Find <T>(name);

            if (ui == null)
            {
                GameObject original = UIRes.LoadPrefab(name);
                if (original != null)
                {
                    GameObject go = GameObject.Instantiate(original) as GameObject;
                    ui = go.GetComponent <T>();
                    if (ui != null)
                    {
                        go.name = name;
                        UIRoot.AddChild(ui);
                    }
                    else
                    {
                        LDebugger.LogError(this.GetType().ToString(), "Load() Prefab没有增加对应组件:" + name);
                    }
                }
                else
                {
                    LDebugger.LogError(this.GetType().ToString(), "Load() Res Not Found: " + name);
                }
            }

            if (ui != null)
            {
                if (mLoadedPanelList.IndexOf(ui) < 0)
                {
                    mLoadedPanelList.Add(ui);
                }
            }
            return(ui);
        }