コード例 #1
0
        public IEnumerator InstantiateGameObjectAsync(string assetBundleName, string assetName)
        {
            AssetBundleAssetOperation request = (AssetBundleAssetOperation)LoadAssetAsync(assetBundleName, assetName, typeof(GameObject));

            if (request == null)
            {
                yield break;
            }
            yield return(StartCoroutine(request));
        }
コード例 #2
0
        /// <summary>
        /// 从给定资产包开始资产的加载操作。
        /// </summary>
        public static BaseAssetBundleAssetOperation LoadAssetAsync(string _assetBundleName, string _assetName, System.Type _type)
        {
            BaseAssetBundleAssetOperation operation = null;

            if (Application.platform == RuntimePlatform.WindowsEditor && SimulateAssetBundleInEditor)
            {
#if UNITY_EDITOR
                //获取标有assetBundleName且命名为assetName的所有资产的资产路径。
                string[] _assetPaths = AssetDatabase.GetAssetPathsFromAssetBundleAndAssetName(_assetBundleName, _assetName);
                //现在我们只从第一个资产中获取主要对象。 还应该考虑类型。
                UnityEngine.Object _obj = AssetDatabase.LoadMainAssetAtPath(_assetPaths[0]);
                operation = new AssetBundleAssetSimulationOperation(_obj);
#endif
            }
            else
            {
                LoadAssetBundle(_assetBundleName);
                operation = new AssetBundleAssetOperation(_assetBundleName, _assetName, _type);
                mProgressOperations.Add(operation);
            }
            return(operation);
        }