示例#1
0
        public IEnumerator LoadAndSetup(UIBaseLayer layer)
        {
            if (m_ui.root == null && !string.IsNullOrEmpty(m_ui.prefabPath))
            {
                PrefabReceiver receiver = new PrefabReceiver();
                yield return(UIController.implements.prefabLoader.Load(m_ui.prefabPath, receiver));

                m_prefab = receiver.prefab;

                if (m_prefab != null)
                {
                    GameObject g = GameObject.Instantiate(m_prefab) as GameObject;
                    m_ui.root = g.transform;
                }
            }

            if (m_ui.root == null)
            {
                m_ui.root = new GameObject("root").transform;
            }
            m_ui.root.gameObject.SetActive(false);

            CollectComponents(m_ui.root.gameObject, layer);

            yield return(m_ui.OnLoaded((UIBase)layer.m_ui));

            m_ui.root.gameObject.SetActive(true);
        }
示例#2
0
        public IEnumerator Load()
        {
            if (!ProgressState(State.Loading))
            {
                ProgressState(State.Removing);
                yield break;
            }

            if (!string.IsNullOrEmpty(ui.prefabPath))
            {
                PrefabReceiver receiver = new PrefabReceiver();
                yield return(UIController.implements.prefabLoader.Load(ui.prefabPath, receiver));

                m_prefab = receiver.prefab;
            }

            m_origin = new GameObject(ui.name);
            SetupStretchAll(m_origin.AddComponent <RectTransform>());
            m_origin.transform.SetParent(m_parent, false);

            GameObject g = null;

            if (m_prefab != null)
            {
                g      = GameObject.Instantiate(m_prefab) as GameObject;
                g.name = m_prefab.name;
            }
            else
            {
                g = new GameObject("root");
                SetupStretchAll(g.AddComponent <RectTransform>());
            }
            ui.root = g.transform;

            Transform parent = ui.View3D() ? UIController.instance.m_view3D : m_origin.transform;

            ui.root.SetParent(parent, false);
            ui.root.gameObject.SetActive(false);

            yield return(ui.OnLoaded());

            Setup();

            if (m_state != State.Loading)
            {
                ProgressState(State.Removing);
                yield break;
            }

            ui.root.gameObject.SetActive(true);
            ProgressState(State.Adding);
        }
示例#3
0
        private async UniTask LoadPrefab()
        {
            PrefabReceiver receiver = new PrefabReceiver();

            await UIController.Implements.PrefabLoader.Load(Part.PrefabPath, receiver);

            m_Prefab = receiver.m_Prefab;
            if (m_Prefab == null)
            {
                Debug.LogError($"UIPartContainer Error LoadPrefab {Part.PrefabPath}");
                return;
            }

            GameObject gameObject = Object.Instantiate(m_Prefab) as GameObject;

            if (gameObject != null)
            {
                Part.RootTransform = gameObject.transform;
            }
        }