//传入Resources下相对路径名称 例如Resources/Game/Effect1    传入Game/Effect1
        public ResourceItem loadImmediate(string filePathName, ResourceType resourceType, string archiveName = "Resources")
        {
            //使用assetbundle打包
            if (UsedAssetBundle)
            {
                //添加Resource
                string completePath = "Resources/" + filePathName;

                string completeName = ArchiveManager.Instance.getPath("Resources", completePath);

                //根据场景名称获取asset信息
                AssetInfo sceneAssetInfo = mAssetInfoManager.GetAssetInfo(completeName);

                //获取依赖的asset的索引
                foreach (int index in sceneAssetInfo.mDependencys)
                {
                    //根据索引获取依赖的Asset
                    AssetInfo depencyAsset     = mAssetInfoManager.GetAssetInfo(index);
                    string    depencyAssetName = depencyAsset.mName;

                    //加载场景依赖assetbundle


                    _LoadImmediate(depencyAssetName, ResourceType.ASSET);
                }

                //加载本身预制件
                ResourceItem unit = _LoadImmediate(completeName, resourceType);

                return(unit);
            }
            //不使用
            else
            {
                Object       asset    = Resources.Load(filePathName);
                ResourceItem resource = new ResourceItem(null, 0, asset, null, resourceType);
                return(resource);
            }
        }
        private IEnumerator _loadLevel(string path, HandleFinishLoadLevel handle, ResourceType resourceType, ResourceAsyncOperation operation)
        {
            //使用assetbundle打包
            if (UsedAssetBundle)
            {
                //根据场景名称获取asset信息
                AssetInfo sceneAssetInfo = mAssetInfoManager.GetAssetInfo(path);
                //获取该包总大小
                operation.mAllDependencesAssetSize = mAssetInfoManager.GetAllAssetSize(sceneAssetInfo);

                //获取依赖的asset的索引
                foreach (int index in sceneAssetInfo.mDependencys)
                {
                    //根据索引获取依赖的Asset
                    AssetInfo depencyAsset     = mAssetInfoManager.GetAssetInfo(index);
                    string    depencyAssetName = depencyAsset.mName;

                    //加载场景依赖assetbundle
                    ResourceItem unit = _LoadImmediate(depencyAssetName, ResourceType.LEVEL);
                    operation.mLoadDependencesAssetSize += unit.AssetBundleSize;
                }

                //加载场景assetbundle
                int         scenAssetBundleSize = 0;
                byte[]      binary      = ResourceCommon.getAssetBundleFileBytes(path, ref scenAssetBundleSize);
                AssetBundle assetBundle = AssetBundle.LoadFromMemory(binary);
                if (!assetBundle)
                {
                    DebugEx.LogError("create scene assetbundle " + path + "in _LoadImmediate failed");
                }

                //添加场景大小
                operation.mLoadDependencesAssetSize += scenAssetBundleSize;

                AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(ResourceCommon.getFileName(path, false));
                operation.asyncOperation = asyncOperation;
                yield return(asyncOperation);

                handleResponse();

                operation.asyncOperation = null;
                operation.mComplete      = true;
                operation.mResource      = null;

                if (null != handle)
                {
                    handle();
                }
            }
            //不使用
            else
            {
                ResourceItem level = new ResourceItem(null, 0, null, path, resourceType);

                //获取加载场景名称
                string         sceneName      = ResourceCommon.getFileName(path, true);
                AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName);
                operation.asyncOperation = asyncOperation;
                yield return(asyncOperation);

                handleResponse();

                operation.asyncOperation = null;
                operation.mComplete      = true;

                if (null != handle)
                {
                    handle();
                }
            }
        }