} //function_end /// <summary> /// 预先把GameObjectPreLoadAsset配置上的预制体打入对象池 /// </summary> /// <returns></returns> IEnumerator PreLoadGameObjectIEn() { string abName = "assetconfigs.u3dassetbundle"; string assetName = "GameObjectPreLoadAsset"; #if UNITY_EDITOR UnityEngine.Object prefab = null; // 是否设置了使用assetbundle资源 if (AssetBundleFramework.DeveloperSetting.GetUseAssetBundleAsset()) { yield return(AssetBundleFramework.AssetBundleMgr.Instance.LoadBundleAsset(abName, assetName, false)); prefab = AssetBundleFramework.AssetBundleMgr.Instance.GetYieldBundleAsset(abName, assetName); } else { prefab = AssetBundleFramework.AssetLoadInEditor.LoadObject <UnityEngine.Object>(abName, assetName); } #else yield return(AssetBundleFramework.AssetBundleMgr.Instance.LoadBundleAsset(abName, assetName, false)); UnityEngine.Object prefab = AssetBundleFramework.AssetBundleMgr.Instance.GetYieldBundleAsset(abName, assetName); #endif if (prefab != null) { GameObjectPreLoadAsset goPreLoadAsset = prefab as GameObjectPreLoadAsset; foreach (var item in goPreLoadAsset.preLoadAssetList) { yield return(new WaitForSeconds(0.1f)); AddGameObject(item.prefab, item.preLoadNum); } } }
public override void OnInspectorGUI() { GameObjectPreLoadAsset script = target as GameObjectPreLoadAsset; EditorGUILayout.LabelField("对象池预加载对象"); EditorGUILayout.LabelField("数量:" + script.size); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("+")) { Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset"); script.size += 1; } if (GUILayout.Button("-")) { Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset"); if (script.size > 0) { script.size -= 1; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("预制体"); EditorGUILayout.LabelField("数量"); EditorGUILayout.EndHorizontal(); if (script.preLoadAssetList == null) { script.preLoadAssetList = new List <GameObjectPreLoadAssetStruct>(); } int i = 0; for (i = 0; i < script.size; i++) { if (i >= script.preLoadAssetList.Count) { GameObjectPreLoadAssetStruct preloadAsset = new GameObjectPreLoadAssetStruct(); preloadAsset.preLoadNum = 1; script.preLoadAssetList.Add(preloadAsset); } EditorGUILayout.BeginHorizontal(); script.preLoadAssetList[i].prefab = EditorGUILayout.ObjectField(script.preLoadAssetList[i].prefab, typeof(GameObject), true) as GameObject; script.preLoadAssetList[i].preLoadNum = EditorGUILayout.IntField(script.preLoadAssetList[i].preLoadNum); if (script.preLoadAssetList[i].preLoadNum < 0) { script.preLoadAssetList[i].preLoadNum = 0; } if (GUILayout.Button("X")) { Undo.RegisterCompleteObjectUndo(script, "GameObjectPreLoadAsset"); script.size -= 1; script.preLoadAssetList.RemoveAt(i); } EditorGUILayout.EndHorizontal(); } if (script.preLoadAssetList.Count > 0) { script.preLoadAssetList.RemoveRange(i, script.preLoadAssetList.Count - i); } if (GUI.changed) { EditorUtility.SetDirty(target); } }