zoukankan      html  css  js  c++  java
  • Unity中自定义应用程序打开Assets目录下指定类型的文件

    在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 }
  • 相关阅读:
    实现MAXIMO7.5工作流任务箱任务颜色提示功能
    MAXIMO 快速查找实现
    DELPHI 通过方法名执行方法
    MAXIMO收件箱中,检修路线修改为其它名称
    在Linux 上手工创建 oracle 11g R2 数据库
    解决 maximo7.X 设备树子节点显示不全
    C++转换构造函数和隐式转换函数
    类或者结构体用无参构造函数创建对象时不需要带括号, 否则会当成函数声明
    今天我注册自己的博客啦,吼吼吼。。
    css3学习
  • 原文地址:https://www.cnblogs.com/answer-yj/p/12107269.html
Copyright © 2011-2022 走看看