public void OnEnable(UnityEngine.Rect rSubPos, EditorWindow rEditorWindow) { mABEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABBuilder.ABEntryConfigPath); mEntryDatas = this.ToEntryDatas(mABEntryConfig); mRefreshTexture = EditorGUIUtility.FindTexture("Refresh"); mOpenFilePath = Application.dataPath + "/Game/GameAsset"; }
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { var rAllAssets = new List <string>(importedAssets); rAllAssets.AddRange(deletedAssets); rAllAssets.AddRange(movedAssets); int nCount = 0; for (int i = 0; i < rAllAssets.Count; i++) { if (!rAllAssets[i].Contains("Assets/Game/GameAsset")) { continue; } nCount++; } if (nCount == 0) { return; } var rABEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABBuilder.ABEntryConfigPath); nCount = 0; for (int i = 0; i < rAllAssets.Count; i++) { if (rABEntryConfig.ABEntries == null) { continue; } if (!rAllAssets[i].Contains("Assets/Game/GameAsset")) { continue; } var rABEntry = rABEntryConfig.ABEntries.Find((rItem) => { return(rAllAssets[i].Contains(rItem.assetResPath)); }); if (rABEntry == null) { continue; } nCount++; } ABBuilder.Instance.UpdateAllAssetsABLabels(ABBuilder.ABEntryConfigPath); for (int i = 0; i < movedAssets.Length; ++i) { var assetPath = movedAssets[i]; if (assetPath.StartsWith("Assets/Game/GameAsset/GUI/Textures")) { var ai = AssetImporter.GetAtPath(assetPath); if (ai != null) { ai.SaveAndReimport(); } return; } } }
/// <summary> /// 生成AB包的配置项 /// </summary> public List <ABEntry> GenerateABEntries() { var rABEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABEntryConfigPath); if (rABEntryConfig == null) { return(new List <ABEntry>()); } return(rABEntryConfig.ABEntries); }
public ABEntryConfig ToEntryConfig(List <EntryData> rEntryDatas) { ABEntryConfig rEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABBuilder.ABEntryConfigPath); if (rEntryConfig.ABEntries == null) { rEntryConfig.ABEntries = new List <ABEntry>(); } rEntryConfig.ABEntries.Clear(); for (int i = 0; i < rEntryDatas.Count; i++) { rEntryConfig.ABEntries.Add(rEntryDatas[i].Entry); } return(rEntryConfig); }
public void Refresh() { mABEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABBuilder.ABEntryConfigPath); mEntryDatas = this.ToEntryDatas(mABEntryConfig); }
public void OnGUI(UnityEngine.Rect rect) { mScrollPos = EditorGUILayout.BeginScrollView(mScrollPos); EditorGUILayout.Space(); using (var space1 = new EditorGUILayout.VerticalScope()) { using (var space2 = new EditorGUILayout.HorizontalScope("TextField")) { EditorGUIUtility.labelWidth = 60; EditorGUILayout.TextField("Target: ", ABBuilder.Instance.CurBuildPlatform.ToString()); if (GUILayout.Button(mRefreshTexture, GUILayout.Width(30))) { mABEntryConfig = EditorAssists.ReceiveAsset <ABEntryConfig>(ABBuilder.ABEntryConfigPath); mEntryDatas = this.ToEntryDatas(mABEntryConfig); } } EditorGUILayout.Space(); for (int i = 0; i < mEntryDatas.Count; i++) { using (var space2 = new EditorGUILayout.VerticalScope("TextField")) { using (var space3 = new EditorGUILayout.HorizontalScope()) { mEntryDatas[i].IsSettingOpen = EditorGUILayout.Foldout(mEntryDatas[i].IsSettingOpen, mEntryDatas[i].Entry.abName); if (GUILayout.Button("Del", GUILayout.Width(30))) { mEntryDatas.RemoveAt(i); return; } } EditorGUILayout.Space(); if (mEntryDatas[i].IsSettingOpen) { EditorGUIUtility.labelWidth = 150; mEntryDatas[i].Entry.abName = EditorGUILayout.TextField("Assetbundle Name: ", mEntryDatas[i].Entry.abName); mEntryDatas[i].Entry.abVariant = EditorGUILayout.TextField("Assetbundle Variant: ", mEntryDatas[i].Entry.abVariant); mEntryDatas[i].Entry.assetResPath = EditorGUILayout.TextField("Asset Res Path: ", mEntryDatas[i].Entry.assetResPath); mEntryDatas[i].Entry.assetSrcType = (ABEntry.AssetSourceType)EditorGUILayout.EnumPopup("Asset Src Type: ", mEntryDatas[i].Entry.assetSrcType); mEntryDatas[i].Entry.assetType = EditorGUILayout.TextField("Asset Type: ", mEntryDatas[i].Entry.assetType); mEntryDatas[i].Entry.abClassName = EditorGUILayout.TextField("Assetbundle Class: ", mEntryDatas[i].Entry.abClassName); mEntryDatas[i].Entry.abOriginalResPath = EditorGUILayout.TextField("Assetbundle Original Res: ", mEntryDatas[i].Entry.abOriginalResPath); // @TODO: 需要编写方便的数组Editor控件 //string rFilterStr = ""; //if (mEntryDatas[i].Entry.filerAssets != null) JsonParser.ToJsonNode(mEntryDatas[i].Entry.filerAssets).ToString(); //rFilterStr = EditorGUILayout.TextField("Asset Filter: ", rFilterStr); //if (!string.IsNullOrEmpty(rFilterStr)) //{ // JsonNode rFilterJsonNode = JsonParser.Parse(rFilterStr); // mEntryDatas[i].Entry.filerAssets = rFilterJsonNode.ToList<string>(); //} } } } } EditorGUILayout.EndScrollView(); if (GUILayout.Button("Add")) { mEntryDatas.Add(new EntryData() { IsSettingOpen = false, Entry = new ABEntry() }); } if (GUILayout.Button("Save")) { mABEntryConfig = ToEntryConfig(mEntryDatas); EditorUtility.SetDirty(mABEntryConfig); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } if (GUILayout.Button("Update All Assets AB Labels")) { ABBuilder.Instance.UpdateAllAssetsABLabels(ABBuilder.ABEntryConfigPath); } }