在Unity使用VS2017打開unityShader文件時總提示錯誤:
我也一直沒找啥原因,shader文件直接使用VSCode打開,當然其他類型的文件也可這樣處理用相應的exe打開,如:pdf,txt等文件均可
具體代碼如下:
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEditor; 4 using UnityEngine; 5 6 public class SetAssetsPathFilesDefaultOpenMode 7 { 8 [UnityEditor.Callbacks.OnOpenAssetAttribute(1)] 9 public static bool SingleSelect(int instanceID, int line) 10 { 11 return false; 12 } 13 14 [UnityEditor.Callbacks.OnOpenAssetAttribute(2)] 15 public static bool DoubleSelect(int instanceID, int line) 16 { 17 //給雙擊文件事件實例化一個ID並返回所選文件路徑 18 string path = AssetDatabase.GetAssetPath(EditorUtility.InstanceIDToObject(instanceID)); 19 //文件路徑 20 string name = Application.dataPath + "/" + path.Replace("Assets/", ""); 21 //指定打開文件類型 22 if (name.EndsWith(".shader")) 23 { 24 //系統進程 25 System.Diagnostics.Process process = new System.Diagnostics.Process(); 26 27 System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 28 29 //設置窗口狀態 30 startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 31 32 //指定打開軟件(可以是可執行文件,也可以是系統上安裝的應用程序) 33 startInfo.FileName = "F:/Windows_5/Microsoft VS Code/Code.exe"; 34 35 //指定打開文件(路徑不能有空格,否則認為時多個文件) 36 startInfo.Arguments = name; 37 38 process.StartInfo = startInfo; 39 process.Start(); 40 return true; 41 } 42 //if (name.EndsWith(".pdf")) 43 //{ 44 // System.Diagnostics.Process process = new System.Diagnostics.Process(); 45 // System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 46 // startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 47 // //指定打開軟件 48 // startInfo.FileName = "C:/Users/lenovo/AppData/Local/Google/Chrome/Application/chrome.exe"; 49 // //指定打開文件(路徑不能有空格,否則認為時多個文件) 50 // startInfo.Arguments = name; 51 // process.StartInfo = startInfo; 52 // process.Start(); 53 // return true; 54 //} 55 56 return false; 57 } 58 }