using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using System.IO; public class FileOpenEx { [OnOpenAssetAttribute(1)] public static bool step1(int instanceID, int line) { return false; } // step2 has an attribute with index 2, so will be called after step1 [OnOpenAssetAttribute(2)] public static bool step2(int instanceID, int line) { string path = AssetDatabase.GetAssetPath(EditorUtility.InstanceIDToObject(instanceID)); string name = Application.dataPath + "/" + path.Replace("Assets/", ""); if (name.EndsWith(".Shader") || name.EndsWith(".cginc") || name.EndsWith(".shader") || name.EndsWith(".lua.txt") || name.EndsWith(".lua")) { if (string.IsNullOrEmpty(ExtensionalTools.shaderEditorPath)) { return false; } else { System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = ExtensionalTools.shaderEditorPath; startInfo.Arguments = name; process.StartInfo = startInfo; process.Start(); return true; } } if (name.EndsWith(".txt") && name.Contains("ResourcesOut") && name.Contains("Refdata")) { if (string.IsNullOrEmpty(ExtensionalTools.txtEditorPath)) { return false; } else { System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = ExtensionalTools.txtEditorPath; name = ExcelReader.GetExcelPath(Path.GetFileNameWithoutExtension(path)); startInfo.Arguments = name; process.StartInfo = startInfo; process.Start(); return true; } } return false; } }