写了一段时间shader,觉得还是有必要找个合适的IDE,以达到事半功倍的效果,提高效率。
1.最早官方的MonoDevelop编辑器
2.Visual Studio
3. Visual Studio Code +扩展组件unity3d-pack
其中unity3d-pack包含ShaderlabVSCode(Free)
4.Visual Studio 2017 + HLSL Tools for Visual Studio
5.Visual Studio +ShaderlabVS
6.Sublime Text + Unity-Shader
介绍安装教程
构建这个插件作者的教程
对于设置环境变量很麻烦可以直接设置成对应的程序运行地址
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 = "D:/Program Files/Sublime Text 3";
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;
}
}
总结
第6种方案是我目前正在使用的。没有最好的工具,只有适合你的工具,可以都尝试下。参考里面也有把自己的写的shader加入到一个库中,这样更方便。
附:参考
Shader着色器代码辅助工具
Unity3D研究院之方便找和写URP的shader
UPR Unlit Texture example