示例#1
0
        private IEnumerator LoadFromAssetBundleAsync <T> (string assetBundleName, string assetName, Action <bool, T> action, string projectTag = null) where T : UnityEngine.Object
        {
            assetBundleName = assetBundleName.ToLower();

            float startTime = Time.realtimeSinceStartup;
            AssetBundleLoadAssetOperation request = GetManager(projectTag).LoadAssetAsync(assetBundleName, assetName, typeof(T));

            if (request == null)
            {
                yield break;
            }
            yield return(StartCoroutine(request));

            T     prefab      = request.GetAsset <T> ();
            float elapsedTime = Time.realtimeSinceStartup - startTime;

            Debug.Log(assetName + (prefab == null ? " was not" : " was") + " loaded successfully in " + elapsedTime + " seconds");
            if (action != null)
            {
                action(prefab == null ? false : true, prefab);
            }
        }
示例#2
0
        public AssetBundleLoadAssetOperation LoadAssetAsync(string assetBundleName, string assetName, System.Type type)
        {
            Debug.Log("Loading " + assetName + " from " + assetBundleName + " bundle");
//			assetBundleName= ResetAssetBundleName(assetBundleName);
            AssetBundleLoadAssetOperation operation = null;

        #if UNITY_EDITOR
            if (SimulateAssetBundleInEditor)
            {
                string[] assetPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(assetBundleName, assetName);
                if (assetPaths.Length == 0)
                {
                    Debug.LogError("There is no asset with name \"" + assetName + "\" in " + assetBundleName);
                    return(null);
                }

                Object target = AssetDatabase.LoadMainAssetAtPath(assetPaths[0]);
                operation = new AssetBundleLoadAssetOperationSimulation(target);
            }
            else
        #endif
            {
                assetBundleName = RemapVariantName(assetBundleName);
                LoadAssetBundle(assetBundleName);
                if (assetName == null)
                {
                    operation = new AssetBundleLoadOperationSelf(assetBundleName, this);
                }
                else
                {
                    operation = new AssetBundleLoadAssetOperationFull(assetBundleName, assetName, type, this);
                }


                m_InProgressOperations.Add(operation);
            }

            return(operation);
        }