博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用SublimeText当Unity Shader的编辑器
阅读量:6829 次
发布时间:2019-06-26

本文共 2831 字,大约阅读时间需要 9 分钟。

用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的插件

网上已经有人做好了,直接拿过来用即可。文章链接请参考 

  • 下载插件包,前往 直接下载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

转载地址:http://nrykl.baihongyu.com/

你可能感兴趣的文章
iOS 开发中关于UIImage的知识点总结
查看>>
也来说说C#异步委托
查看>>
初识函数
查看>>
4.1.1 存储器的层次
查看>>
linux 根据端口查看系统进程
查看>>
ORACLE之莫名---ORA-02290: 违反检查约束条件
查看>>
SWFUpload V2.2.0 详细说明文档
查看>>
Oracle - SQL 错误: ORA-00917: 缺失逗号
查看>>
doj常用包
查看>>
Windows下 VM12虚拟机安装OS X 10.11 和VM TOOLS
查看>>
坦克大战底层框架搭建并思路分析(一)
查看>>
python 读取大文件越来越慢
查看>>
python模块详解 logging
查看>>
Asp.Net MVC4.0 官方教程 入门指南之六--查看Edit方法和Edit视图
查看>>
C#文件操作大全
查看>>
python 数字和字符串转换问题
查看>>
sublime插件使用整理
查看>>
Codeforces Round #402 (Div. 2)
查看>>
[Exception Android 22] - Could not find com.android.support:design:23.1.1
查看>>
Windows环境下python的安装与使用
查看>>