private static string ConvertLuaPathSourceToExported(string sourceLuaPath) { string exportedLuaPath = string.Format("{0}/{1}{2}" , XLuaSetting.GetInstance().ExportedLuaRoot , sourceLuaPath.Substring(sourceLuaPath.LastIndexOf(XLuaSetting.LUA_SCRIPT_SIGN) + XLuaSetting.LUA_SCRIPT_SIGN.Length) , XLuaSetting.LUA_EXPORTED_EXTENSION); return(exportedLuaPath); }
public static void ReimportAllLuaScript() { string root = XLuaSetting.GetInstance().ExportedLuaRoot; if (Directory.Exists(root)) { Directory.Delete(root, true); } Directory.CreateDirectory(root); string[] emptyStrings = new string[0]; OnPostprocessAllAssets(AssetDatabase.GetAllAssetPaths() , emptyStrings , emptyStrings , emptyStrings); }
public override void OnGUI(string searchContext) { base.OnGUI(searchContext); XLuaSetting setting = XLuaSetting.GetInstance(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("保存")) { XLuaSetting.GetInstance().Save(); } if (GUILayout.Button("重新导入所有Lua脚本")) { LuaScriptPostprocessor.ReimportAllLuaScript(); } EditorGUILayout.EndHorizontal(); setting.ExportedLuaRoot = (EGLUtility.Folder("Lua的导出目录", setting.ExportedLuaRoot)); }
private static void OnPostprocessAllAssets(string[] importedAssets , string[] deletedAssets , string[] movedAssets , string[] movedFromAssetPaths) { if (string.IsNullOrEmpty(XLuaSetting.GetInstance().ExportedLuaRoot)) { return; } bool changed = false; try { for (int iAsset = 0; iAsset < importedAssets.Length; iAsset++) { string iterAsset = importedAssets[iAsset]; if (!IsLuaScript(iterAsset)) { continue; } CreateLua(iterAsset); changed = true; } for (int iAsset = 0; iAsset < deletedAssets.Length; iAsset++) { string iterAsset = deletedAssets[iAsset]; if (!IsLuaScript(iterAsset)) { continue; } changed |= DeleteLua(iterAsset); } for (int iAsset = 0; iAsset < movedAssets.Length; iAsset++) { string iterAsset = movedFromAssetPaths[iAsset]; if (IsLuaScript(iterAsset)) { changed |= DeleteLua(iterAsset); } iterAsset = movedAssets[iAsset]; if (IsLuaScript(iterAsset)) { CreateLua(iterAsset); changed = true; } } } catch (Exception e) { MDebug.LogError("XLua", "Postprocess lua script Exception:\n" + e.ToString()); } finally { if (changed) { AssetDatabase.Refresh(ImportAssetOptions.Default); } } }