public bool IsReady(GameItemInfo gameItem) { Initialize(); ResourceGameItem item = gameItem as ResourceGameItem; if (item != null) { return(true); } AssetBundleGameItem assetBundleGameItem = gameItem as AssetBundleGameItem; if (assetBundleGameItem != null) { if (_assetBundles.ContainsKey(assetBundleGameItem.AssetBundle)) { return(_assetBundles[assetBundleGameItem.AssetBundle].LoadAsset(assetBundleGameItem.ItemName)); } if (!IsAssetBundleDownloaded(assetBundleGameItem.AssetBundle)) { return(false); } return(true); } return(true); }
public override PresentationResult OnInspectorGui(PresentationParamater parameter) { AssetBundleGameItemPresentationData presentationData = parameter.PresentationData as AssetBundleGameItemPresentationData ?? new AssetBundleGameItemPresentationData(); Change change = new Change(); AssetBundleGameItem assetBundleGameItem = parameter.Instance as AssetBundleGameItem ?? new AssetBundleGameItem(); string[] bundleItems = new[] { "none" }.Concat(AssetDatabase.GetAllAssetBundleNames()).ToArray(); int bundleIndex = AssetDatabase.GetAllAssetBundleNames().IndexOf(s => s == assetBundleGameItem.AssetBundle) + 1; int newIndex = EditorGUILayout.Popup("Asset bundle", bundleIndex, bundleItems); string assetBundleName = newIndex > 0 ? AssetDatabase.GetAllAssetBundleNames()[newIndex - 1] : string.Empty; change.IsDataChanged |= newIndex != bundleIndex; assetBundleGameItem.AssetBundle = assetBundleName; if (newIndex > 0) { string[] assets = AssetDatabase.GetAssetPathsFromAssetBundle(assetBundleName).Select(s => Path.GetFileNameWithoutExtension(s)).ToArray(); string[] assetItems = new[] { "none" }.Concat(assets).ToArray(); int assetIndex = assets.IndexOf(s => s == assetBundleGameItem.ItemName) + 1; int newAssetIndex = EditorGUILayout.Popup("Asset", assetIndex, assetItems); assetBundleGameItem.ItemName = newAssetIndex == 0 ? string.Empty : assets[newAssetIndex - 1]; change.IsDataChanged |= assetIndex != newAssetIndex; } return(new PresentationResult { Change = change, PresentationData = presentationData, Result = assetBundleGameItem }); }
public Object Resolve(GameItemInfo gameItem) { Initialize(); ResourceGameItem item = gameItem as ResourceGameItem; if (item != null) { return(Resources.Load(item.Address)); } AssetBundleGameItem assetBundleGameItem = gameItem as AssetBundleGameItem; if (assetBundleGameItem != null) { if (_assetBundles.ContainsKey(assetBundleGameItem.AssetBundle)) { return(_assetBundles[assetBundleGameItem.AssetBundle].LoadAsset(assetBundleGameItem.ItemName)); } if (!IsAssetBundleDownloaded(assetBundleGameItem.AssetBundle)) { throw new Exception(string.Format("Asset bundle {0} is not downloaded", assetBundleGameItem.AssetBundle)); } Uri bundleServerAddress = GetBundleServerAddress(assetBundleGameItem.AssetBundle); UnityEngine.AssetBundle assetBundle = UnityEngine.AssetBundle.LoadFromFile( InfoResolver.Resolve <FortInfo>() .ServerConnectionProvider.UserConnection.LoadFromCache(bundleServerAddress)); _assetBundles[assetBundleGameItem.AssetBundle] = assetBundle; return(assetBundle.LoadAsset(assetBundleGameItem.ItemName)); } return((Object)gameItem.GetType().GetProperty("GameItem").GetValue(gameItem, new object[0])); }