用SublimeText當Unity Shader的編輯器


用Visual Studio寫shader實在蛋疼,那可能就會有人要問了,為啥不用插件可視化制作shader呢?因為我是新手,新手還是老老實實敲代碼,慢慢來…

 

所以試着在網上找找,有沒有類似的插件或者編輯器,被我找到了,也基本符合我的要求。

我想實現的效果如下:雙擊xxx.shader打開Sublime Text,可在Sublime Text中對常用的函數進行提示,並支持函數的跳轉。

這就分為二個功能:

1、雙擊shader文件打開Sublime Text;

2、使用Sublime Text來編輯shader;

 

第一個功能,比較簡單,在Assets目錄下建立“Editor”目錄(如果已存在,請忽略),放置 ShaderEditor.cs,代碼如下:

using UnityEngine;
using UnityEditor;
using System;

public class LuaTxtEditor
{

    //http://www.xuanyusong.com/archives/3702 
    [UnityEditor.Callbacks.OnOpenAssetAttribute(1)]
    public static bool step1(int instanceID, int line)
    {
        return false;
    }

    [UnityEditor.Callbacks.OnOpenAssetAttribute(2)]
    public static bool step2(int instanceID, int line)
    {
        string strFilePath = AssetDatabase.GetAssetPath(EditorUtility.InstanceIDToObject(instanceID));
        string strFileName = System.IO.Directory.GetParent(Application.dataPath) + "/" + strFilePath;

        if (strFileName.EndsWith(".shader"))
        {
            string strSublimeTextPath = Environment.GetEnvironmentVariable("SublimeText_Path");
            if (strSublimeTextPath != null && strSublimeTextPath.Length > 0)
            {
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                startInfo.FileName = strSublimeTextPath + (strSublimeTextPath.EndsWith("/") ? "" : "/") + "sublime_text.exe";
                startInfo.Arguments = "\"" + strFileName + "\"";
                process.StartInfo = startInfo;
                process.Start();

                //Debug.Log(startInfo.FileName + " \t " + startInfo.Arguments);

                return true;
            }
            else
            {
                Debug.Log("Not Found Enviroment Variable 'SublimeText_Path'.");

                return false;
            }            
        }

        return false;
    }

}

然后,你需要設置 Sublime Text的環境變量 SublimeText_Path (如下圖所示)

image

此時,雙擊 shader 可能仍無法直接打開 Sublime Text。你需要關閉 Unity,重啟桌面進程 —— 讓環境變量生效(任務管理器 kill 掉進程 explorer.exe,然后再新建任務 explorer.exe)

 

 

第二個功能,安裝Sublime Text的插件

網上已經有人做好了,直接拿過來用即可。文章鏈接請參考  http://blog.csdn.net/w88219003/article/details/46682507

  • 下載插件包,前往 https://github.com/cjsjy123/Unity-Shader 直接下載zip文件。
  • 安裝 package,Sublime Text菜單 Preferences –> Browse Packages,將zip文件解壓到該目錄下,重命名文件夾為 Unity-Shader,如下圖所

image

  • 修改源碼 unityShader.py,原因代碼寫的有問題,並沒有讀取 User 的配置,一直報錯“U5_Shader_path no set”。我查看源碼,發現按作者寫的設置了Shader_path沒用,原因見代碼

image

上面畫圈的那里,代碼寫的有點迷糊,如果使用 U5,為啥還要設置 Shader_path呢?

知道報錯的原因,直接改文件:UnityShader.sublime-settings

{
    // must set the path and version  u5 or u4
    "Unity_Version":"U5",
    "Shader_path": "K:/Unity/Editor/Data/CGIncludes",
    "U5_Shader_path":"K:/Unity/Editor/Data/CGIncludes"
}

上面的K:/xxx,改成你自己的路徑,然后就可以愉快的用起來了,是支持跳轉的。Shader_path是Unity內置的着色器,以.cginc結尾。在Unity Setup Path/Editor/Data/CGIncludes 目錄下

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM