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 }
  • 相关阅读:
    【转载】Java系列笔记(3)
    CentOS 7下Samba服务器的安装与配置
    Linux常用目录结构
    Linux计划任务crontab
    转:Linux 双网卡配置两个IP同时只有一个会通的原因
    centos7中搭建ntp服务器
    centos7中使用vg方式扩充root分区
    ping命令脚本实现显示网络状态、学生姓名、学号
    centos中基于随机数,再加入班级学生姓名
    centos7 shell脚本实现随机数
  • 原文地址:https://www.cnblogs.com/answer-yj/p/12107269.html
Copyright © 2011-2022 走看看