void QuickLoadObject() { string name = prefab.name; string assetPath = UnityEditor.AssetDatabase.GetAssetPath(prefab);// UnityEditor.AssetDatabase.GetTextMetaFilePathFromAssetPath(.asset(prefab)[0]; UnityEditor.AssetImporter importer = UnityEditor.AssetImporter.GetAtPath(assetPath); string assetBundle = importer.assetBundleName; if (string.IsNullOrEmpty(assetBundle)) { UnityEditor.EditorUtility.DisplayDialog("提示", "预制体没有assetBundle标记", "确认"); return; } if (bundles.Find((x) => x.assetName == name) != null) { UnityEditor.EditorUtility.DisplayDialog("提示", "信息已经加载到集合中", "确认"); return; } RunTimeBundleInfo info = new RunTimeBundleInfo(); info.assetName = name; info.bundleName = assetBundle; info.isWorld = !prefab.GetComponent <RectTransform>(); info.parent = transform; bundles.Add(info); UnityEditor.EditorUtility.SetDirty(this); }
/// <summary> /// 获取对象实例 /// </summary> void CreateInstance(GameObject prefab, RunTimeBundleInfo trigger) { if (prefab == null || trigger == null) { return; } GameObject go = GameObject.Instantiate(prefab); go.SetActive(true); go.transform.SetParent(trigger.parent, trigger.isWorld); if (trigger.OnCreate != null) { trigger.OnCreate(go); } }
/// <summary> /// 创建对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="assetName"></param> /// <param name="onCreate"></param> public void GetGameObjectFromBundle(RunTimeBundleInfo trigger) { GameObject go; if (loadedPrefabs.TryGetValue(trigger.IDName, out go) && go != null) { CreateInstance(go, trigger); } else { assetLoader.LoadAssetFromUrlAsync <GameObject>(trigger.bundleName, trigger.assetName, (x) => { if (x != null) { loadedPrefabs[trigger.assetName] = x; CreateInstance(x, trigger); } else { Debug.Log(x + "::空"); } }); } }