コード例 #1
0
        private void LoadUIFormSuccessCallback(string uiFormAssetName, object uiFormAsset, float duration, object userData)
        {
            OpenUIFormInfo openUIFormInfo = (OpenUIFormInfo)userData;

            if (openUIFormInfo == null)
            {
                Debug.LogError("打开界面的信息为空");
                return;
            }

            m_UIFormsBeingLoaded.Remove(openUIFormInfo.SerialId);
            m_UIFormAssetNamesBeingLoaded.Remove(uiFormAssetName);

            if (m_UIFormsToReleaseOnLoad.Contains(openUIFormInfo.SerialId))
            {
                Debug.LogError(string.Format("需要释放的界面:{0} 加载成功", openUIFormInfo.SerialId.ToString()));
                m_UIFormsToReleaseOnLoad.Remove(openUIFormInfo.SerialId);
                m_UIFormHelper.ReleaseUIForm(uiFormAsset, null);
                return;
            }

            //实例化界面,并将界面实例对象放入对象池
            UIFormInstanceObject uiFormInstanceObject = new UIFormInstanceObject(uiFormAssetName, uiFormAsset, m_UIFormHelper.InstantiateUIForm(uiFormAsset), m_UIFormHelper);

            m_InstancePool.Register(uiFormInstanceObject, true);

            //打开界面
            OpenUIForm(openUIFormInfo.SerialId, uiFormAssetName, openUIFormInfo.UIGroup, uiFormInstanceObject.Target, openUIFormInfo.PauseCoveredUIForm, true, duration, openUIFormInfo.UserData);
        }
コード例 #2
0
        /// <summary>
        /// 打开界面
        /// </summary>
        /// <param name="uiFormAssetName">界面资源名称</param>
        /// <param name="uiGroupName">界面组名称</param>
        /// <param name="pauseCoveredUIForm">是否暂停被覆盖的界面</param>
        /// <param name="userData">用户自定义数据</param>
        /// <returns>界面的序列编号</returns>
        public int OpenUIForm(string uiFormAssetName, string uiGroupName, bool pauseCoveredUIForm = false, object userData = null)
        {
            if (m_ResourceManager == null)
            {
                Debug.LogError("打开界面时资源管理器为空");
                return(-1);
            }

            if (m_UIFormHelper == null)
            {
                Debug.LogError("打开界面时界面辅助器为空");
                return(-1);
            }

            if (string.IsNullOrEmpty(uiFormAssetName))
            {
                Debug.LogError("要打开的界面的资源名称为空");
                return(-1);
            }

            if (string.IsNullOrEmpty(uiGroupName))
            {
                Debug.LogError("要打开的界面的界面组名称为空");
                return(-1);
            }

            //界面组检查
            UIGroup uiGroup = GetUIGroup(uiGroupName);

            if (uiGroup == null)
            {
                Debug.LogError(string.Format("要打开的界面的界面组:{0} 不存在", uiGroupName));
            }
            //尝试从对象池获取界面实例
            int serialId = m_Serial++;
            UIFormInstanceObject uiFormInstanceObject = m_InstancePool.Spawn(uiFormAssetName);

            if (uiFormInstanceObject == null)
            {
                //没获取到就加载该界面
                m_UIFormsBeingLoaded.Add(serialId);
                m_UIFormAssetNamesBeingLoaded.Add(uiFormAssetName);
                m_ResourceManager.LoadAsset(uiFormAssetName, m_LoadAssetCallbacks, new OpenUIFormInfo(serialId, uiGroup, pauseCoveredUIForm, userData));
            }
            else
            {
                OpenUIForm(serialId, uiFormAssetName, uiGroup, uiFormInstanceObject.Target, pauseCoveredUIForm, false, 0f, userData);
            }

            return(serialId);
        }