/* ******************************************************************************** *Copyright(C),coolae.net *Author: chenbin *Version: 2.0 *Date: 2017-01-09 *Description: 酷猿菜单 *Others: *History: ********************************************************************************* */ using UnityEngine; using UnityEditor; using System.Collections; using Coolape; using System.IO; using System.Collections.Generic; static public class ECLCoolapeMenu { const string rootName = "Coolape"; const string toolesName = rootName + "/Tools"; static int _index = 1; static int index { get { return _index; } } [MenuItem (rootName + "/ProjectManager", false, -9999)] static public void showProjectView () { EditorWindow.GetWindow (false, "CoolapeProject", true); } [@MenuItem (toolesName + "/Asset Maker/Build AssetBundles Selection Files 4 Upgrade", false, 1)] static public void makeAssetBundles () { ECLCreatAssetBundle4Update.makeAssetBundles (); } [@MenuItem (toolesName + "/Asset Maker/Build AssetBundles From Directory of Files 4 Upgrade", false, 2)] static public void makeAssetBundlesSelections () { ECLCreatAssetBundle4Update.makeAssetBundlesSelections (); } [@MenuItem (toolesName + "/Asset Maker/Build AssetBundles Selection Files 4 Upgrade(Uncompressed)", false, 3)] static public void makeAssetBundlesUncompressed () { ECLCreatAssetBundle4Update.makeAssetBundlesUncompressed (); } // [MenuItem (toolesName + "/Publish Tool", false, 4)] // static public void OpenBuilder () // { // EditorWindow.GetWindow (false, "CoolapePublisher", true); // } [MenuItem (toolesName + "/AllPanels => AB", false, 6)] static public void uipanels2U3d () { UnityEngine.Object[] objs = Selection.objects; int count = objs.Length; UnityEngine.Object obj = null; CLPanelLua panel = null; for (int i = 0; i < count; i++) { obj = objs [i]; panel = ((GameObject)obj).GetComponent (); if (panel != null) { Debug.LogError (obj.name); CLPanelLuaInspector.doSaveAsset (panel.gameObject); } } } [MenuItem (toolesName + "/LuaEncode/Encode selected Lua", false, 7)] static public void LuaEncodeSelected () { ECLLuaEncodeTool.luajitEncode (); } [MenuItem (toolesName + "/LuaEncode/Encode selected Dir", false, 8)] static public void LuaEncodeAll () { ECLLuaEncodeTool.luajitEncodeAll (); } [MenuItem(toolesName + "/Create CfgBioData FromJson", false, 8)] static public void createCfgBioDataFromJson() { ECLProjectManager.self.genCfgData(); } [MenuItem (toolesName + "/GenerateSecondaryUVSet", false, 9)] static public void GenerateSecondaryUVSet () { MeshFilter mf = null; foreach (UnityEngine.Object o in Selection.objects) { if (o is GameObject) { mf = ((GameObject)o).GetComponent (); if (mf != null && mf.mesh != null) { Unwrapping.GenerateSecondaryUVSet (mf.mesh); EditorUtility.SetDirty (o); } } } } [MenuItem (toolesName + "/DataProc/PrintMd5", false, 10)] static public void showFileContentMd5 () { UnityEngine.Object obj = Selection.objects [0]; string path = AssetDatabase.GetAssetPath (obj);//Selection表示你鼠标选择激活的对象 Debug.Log (path); Debug.Log ("md5==[" + Utl.MD5Encrypt (File.ReadAllBytes (path)) + "]"); } [MenuItem (toolesName + "/DataProc/PrintBioFile", false, 10)] static public void showBioFileContent () { UnityEngine.Object obj = Selection.objects [0]; string path = AssetDatabase.GetAssetPath (obj);//Selection表示你鼠标选择激活的对象 object _obj = Utl.fileToObj (path); if (_obj is Hashtable) { Debug.Log (Utl.MapToString ((Hashtable)_obj)); } else if (_obj.GetType () == typeof(NewList) || _obj.GetType () == typeof(ArrayList)) { Debug.Log (Utl.ArrayListToString2 ((ArrayList)_obj)); } else { Debug.Log (_obj.ToString ()); } } [MenuItem (toolesName + "/DataProc/Bio2Json", false, 11)] static public void Bio2Json () { UnityEngine.Object[] objs = Selection.objects; int count = objs.Length; UnityEngine.Object obj = null; CLPanelLua panel = null; for (int i = 0; i < count; i++) { obj = objs [i]; string path = AssetDatabase.GetAssetPath (obj);//Selection表示你鼠标选择激活的对象 object map = Utl.fileToObj (path); string jsonStr = JSON.JsonEncode (map); Debug.Log (jsonStr); File.WriteAllText (path + ".json", jsonStr); } } [MenuItem (toolesName + "/DataProc/Json2Bio", false, 12)] static public void Json2Bio () { UnityEngine.Object[] objs = Selection.objects; int count = objs.Length; UnityEngine.Object obj = null; CLPanelLua panel = null; for (int i = 0; i < count; i++) { obj = objs [i]; string path = AssetDatabase.GetAssetPath (obj);//Selection表示你鼠标选择激活的对象 string jsonStr = File.ReadAllText (path); object map = JSON.JsonDecode (jsonStr); MemoryStream ms = new MemoryStream (); B2OutputStream.writeObject (ms, map); Directory.CreateDirectory (Path.GetDirectoryName (path)); File.WriteAllBytes (path + ".bio", ms.ToArray ()); } } [MenuItem (toolesName + "/Lightmap/Save", false, 13)] static public void SaveLightmapInfo () { CLPrefabLightmapDataEditor.SaveLightmapInfo (); } [MenuItem (toolesName + "/Lightmap/Load", false, 14)] static public void LoadLightmapInfo () { CLPrefabLightmapDataEditor.LoadLightmapInfo (); } [MenuItem (toolesName + "/Lightmap/Clear", false, 15)] static public void ClearLightmapInfo () { CLPrefabLightmapDataEditor.ClearLightmapInfo (); } [MenuItem (toolesName + "/Show Frame Dir List", false, 16)] static public void showDirList () { string ret = ""; string dir = Application.dataPath + "/" + ECLProjectManager.FrameName; ECLEditorUtl.getDirList (dir, "", ref ret); Debug.Log (ret); } [MenuItem (toolesName + "/Localize", false, 17)] static public void showLocalize () { ECLLocalizeSelection.open (null); } [MenuItem (toolesName + "/setModleProp", false, 17)] static public void setModeProp () { Object[] objs = Selection.objects; if (objs == null || objs.Length == 0) return; ModelImporter mi = null; string path = ""; for (int j = 0; j < objs.Length; j++) { path = AssetDatabase.GetAssetPath (objs [j]); // mi = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath (objs[j])) as ModelImporter; ECLEditorUtl.setModelProp (path, false, ModelImporterNormals.None, ModelImporterTangents.None); } } [MenuItem (toolesName + "/check Modle Setting", false, 17)] static public void checkModleSetting () { string pathRoot = "Assets/"+ CLPathCfg.self.basePath + "/"; } [MenuItem (toolesName + "/Close Render shadow", false, 18)] static public void closeRenderShadow () { Object[] objs = Selection.objects; if (objs == null || objs.Length == 0) return; GameObject go = null; for (int j = 0; j < objs.Length; j++) { go = objs [j] as GameObject; if (go == null) continue; Renderer[] rds = go.GetComponentsInChildren (); Renderer rd = null; for (int i = 0; i < rds.Length; i++) { rd = rds [i]; rd.receiveShadows = false; rd.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; } EditorUtility.SetDirty (go); } AssetDatabase.SaveAssets (); } [MenuItem (toolesName + "/CleanMainCityText", false, 18)] static public void cleanMainCityText () { GameObject go = Selection.activeObject as GameObject; TextMesh[] tms = go.GetComponentsInChildren (); for (int i = 0; i < tms.Length; i++) { tms [i].font = null; Renderer mr = tms [i].GetComponent (); mr.material = null; mr.sharedMaterial = null; mr.materials = new Material[1]; mr.sharedMaterials = new Material[1]; } EditorUtility.SetDirty (go); } [MenuItem (toolesName + "/SetMainCityText", false, 19)] static public void setMainCityText () { GameObject go = Selection.activeObject as GameObject; TextMesh[] tms = go.GetComponentsInChildren (); for (int i = 0; i < tms.Length; i++) { tms [i].font = CLUIInit.self.emptFont.dynamicFont; Renderer mr = tms [i].GetComponent (); mr.sharedMaterial = tms [i].font.material; } EditorUtility.SetDirty (go); } [MenuItem (toolesName + "/UI/Sprite Packer", false, 20)] static public void showSpritePacker () { EditorWindow.GetWindow (false, "Sprite Packer", true); } [MenuItem (toolesName + "/Curve 2 Code", false, 21)] static public void curve2Code () { EditorWindow.GetWindow (false, "Curve->Code", true); } [MenuItem (toolesName + "/Retain one Material", false, 22)] static public void retainOneMaterial () { GameObject go = Selection.activeObject as GameObject; if (go == null) return; Renderer[] mrs = go.GetComponentsInChildren (); for (int i = 0; i < mrs.Length; i++) { if (mrs [i].sharedMaterials != null && mrs [i].sharedMaterials.Length > 1) { Material[] mrs2 = new Material[1]; mrs2 [0] = mrs [i].sharedMaterial; mrs [i].sharedMaterials = mrs2; } } EditorUtility.SetDirty (go); } [MenuItem (toolesName + "/Get Atlas And Lable", false, 23)] static public void getAtlasAndLable () { Hashtable texs = new Hashtable (); Hashtable labs = new Hashtable (); GameObject[] gos = Selection.gameObjects; for (int i = 0; i < gos.Length; i++) { GameObject go = gos [i]; Debug.LogError (go.name); dogetAtlasAndLable (go.transform, texs, labs); } string strs = ""; foreach (DictionaryEntry cell in texs) { strs = strs + cell.Key + ","; } strs = strs + "\n"; strs = strs + "\n"; foreach (DictionaryEntry cell in labs) { strs = strs + cell.Key + ","; } Debug.LogError (strs); } static void dogetAtlasAndLable (Transform tr, Hashtable texs, Hashtable labs) { for (int i = 0; i < tr.childCount; i++) { UISprite sp = tr.GetChild (i).GetComponent (); if (sp != null) { texs [sp.spriteName] = 1; } UILabel lb = tr.GetChild (i).GetComponent (); if (lb != null) { labs [lb.text] = 1; } dogetAtlasAndLable (tr.GetChild (i), texs, labs); } } [MenuItem (toolesName + "/chg Atlas And Lable", false, 24)] static public void chgAtlasAndLable () { GameObject go = Selection.activeGameObject; dochgAtlasAndLable (go.transform, "atlasMainUI", "fontMainUI"); } static void dochgAtlasAndLable (Transform tr, string atlasName, string fontName) { for (int i = 0; i < tr.childCount; i++) { UISprite sp = tr.GetChild (i).GetComponent (); if (sp != null) { sp.atlasName = atlasName; sp.atlas = CLUIInit.self.getAtlasByName (atlasName); } UILabel lb = tr.GetChild (i).GetComponent (); if (lb != null) { lb.fontName = fontName; lb.bitmapFont = CLUIInit.self.getFontByName (fontName); } dochgAtlasAndLable (tr.GetChild (i), atlasName, fontName); } } [MenuItem (toolesName + "/texture setting", false, 25)] static public void setTexturesetting () { Object[] gos = Selection.objects; string path = ""; List refreshFiles = new List (); for (int i = 0; i < gos.Length; i++) { path = AssetDatabase.GetAssetPath (gos [i]); if (ECLTextureSetting.setTexture (path)) { // 说明有重新设置 refreshFiles.Add (path); } } for (int i = 0; i < refreshFiles.Count; i++) { ECLCreatAssetBundle4Update.createAssets4Upgrade (refreshFiles [i], true); } EditorUtility.DisplayDialog ("success", "Finished", "Okay"); } [MenuItem(toolesName + "/Clean Cache", false, 999)] static public void cleanCache() { Debug.Log(Application.persistentDataPath); FileUtil.DeleteFileOrDirectory(Application.persistentDataPath); PlayerPrefs.DeleteAll(); } [MenuItem(toolesName + "/Clean EditorPrefs", false, 999)] static public void cleanEditorPrefs() { EditorPrefs.DeleteAll(); } }