Exemplo n.º 1
0
        public void Load(bool a_bAsync, UnityAction <AssetDesc> a_onLoadFinished)
        {
            if (LoadState == EAssetLoadState.Invalid)
            {
                _RegisterFinishedListener(a_onLoadFinished);
                m_bAsync = a_bAsync;

                LoadState = EAssetLoadState.Loading;

                // 先从包里加载资源,如果没有相关的包,则直接用Resources的方式加载
                if (m_assetPackage == null)
                {
                    AssetManager.Get().GetPackage(Path, out m_assetPackage);
                }
                if (m_assetPackage != null)
                {
                    // 存在对应的包,从包里加载
                    m_assetPackage.Load(m_bAsync, _OnPackageLoadFinished);
                }
                else
                {
                    // 不存在对应的包,用Resources的方式加载资源
                    if (m_bAsync)
                    {
                        if (AssetType == null)
                        {
                            m_resourceRequest = Resources.LoadAsync(Path);
                        }
                        else
                        {
                            m_resourceRequest = Resources.LoadAsync(Path, AssetType);
                        }
                    }
                    else
                    {
                        if (AssetType == null)
                        {
                            m_assetTemplate = Resources.Load(Path);
                        }
                        else
                        {
                            m_assetTemplate = Resources.Load(Path, AssetType);
                        }
                        _OnLoadFinished();
                    }
                }
            }
            else if (LoadState == EAssetLoadState.Loading)
            {
                _RegisterFinishedListener(a_onLoadFinished);
            }
            else if (LoadState == EAssetLoadState.Done || LoadState == EAssetLoadState.Error)
            {
                if (a_onLoadFinished != null)
                {
                    a_onLoadFinished(this);
                }
            }
        }