• 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 }
  • 相关阅读:
    runloop原理runloop机制 iOS
    删除Scenedelegate崩溃
    extends和implements区别
    App网络层有哪些优化策略?
    同一个SQL语句如何实现在ORACLE和SQLserver中查询某一天的数据
    leetcode2139 得到目标值的最少行动次数
    leetcode2097 合法重新排列数对
    leetcode1405 最长快乐字符串
    leetcode2183 统计可以被 K 整除的下标对数目
    leetcode2141 同时运行 N 台电脑的最长时间
  • 原文地址:https://www.cnblogs.com/answer-yj/p/12107269.html
Copyright © 2020-2023  润新知