zoukankan      html  css  js  c++  java
  • Unity---资源管理中不同资源的路径获取方式

    1、首先需要先了解两个知识点: Unity内置的文件路径获取方式、windows的Directory.GetFiles文件获取方式:

       1>Unity内置的文件路径获取方式,以下是官方解释:https://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html

      以下是自己对AssetDatabase类中一些方法的简单测试:

     

     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using UnityEngine;
     4 using UnityEditor;
     5 
     6 using UnityEngine;
     7 using UnityEditor;
     8 
     9 public class TestAssetDatabase : Editor
    10 {
    11     const string TestMatPath = @"Assets/Materials/";
    12     const string TestMatName = "TestMaterial.mat";
    13 
    14     static string MatPath = string.Format("{0}{1}", TestMatPath, TestMatName);
    15 
    16     [MenuItem("Tools/Create Asset")]
    17     static void CreateMaterial()
    18     {
    19         var material = new Material(Shader.Find("Specular"));
    20         AssetDatabase.CreateAsset(material, MatPath);  //Materials文件夹 需要手动创建
    21     }
    22 
    23     [MenuItem("Tools/Delete Asset")]
    24     static void DeleteMaterial()
    25     {
    26         AssetDatabase.DeleteAsset(MatPath);
    27     }
    28 
    29     [MenuItem("Tools/Copy Asset")]
    30     static void CopyMaterial()
    31     {
    32         AssetDatabase.CopyAsset(MatPath, "Assets/NewMaterials/TestMaterial.mat");  //NewMaterials文件夹 需要手动创建
    33     }
    34 
    35     [MenuItem("Tools/Load Asset")]
    36     static void LoadMaterial()
    37     {
    38         //加载资源两种不同的写法,需要些资源后缀的
    39         //Material mat = AssetDatabase.LoadAssetAtPath<Material>(MatPath);
    40         Material mat = AssetDatabase.LoadAssetAtPath(MatPath, typeof(Material)) as Material;
    41         Debug.Log(mat.color);
    42     }
    43 
    44 
    45     //Filter可以是:Name、Lable、Type(内置的、自定义)
    46 
    47     //Type 关键字 t:
    48     static string fliterMat = "t:Material";             //单个
    49     static string filterPrefab = "t:Prefab";
    50     static string fliterMatPre = "t:Material t:Prefab";    //多个
    51     static string filterCustomDefine = "t:CustomDefine";   //自定义的类型,需要是ScriptableObject创建的资源
    52 
    53     //Label 关键字 l:
    54     static string filterLabel = "l:lgs";
    55 
    56     static string filterMixed = "Cube l:lgs";   //混合过滤---名字中有Cube,Label为 lgs
    57 
    58     [MenuItem("Tools/Find Asset")]
    59     static void FindAsset()
    60     {
    61         string[] guidArray = AssetDatabase.FindAssets(filterMixed); 
    62         foreach (string item in guidArray)
    63         {
    64             Debug.Log(AssetDatabase.GUIDToAssetPath(item)); //转换来的资源路径是带有后缀名字的
    65         }
    66     }
    67 }

       2>windows的Directory.GetFiles文件获取方式,官方解释:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory.getfiles?view=netframework-4.7.2#System_IO_Directory_GetFiles_System_String_System_String_System_IO_SearchOption_

      以下是官方代码示例(指定以字母开头的文件数):

     1 using System;
     2 using System.IO;
     3 
     4 class Test 
     5 {
     6     public static void Main() 
     7     {
     8         try 
     9         {
    10             // Only get files that begin with the letter "c."
    11             string[] dirs = Directory.GetFiles(@"c:", "c*");
    12             Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
    13             foreach (string dir in dirs) 
    14             {
    15                 Console.WriteLine(dir);
    16             }
    17         } 
    18         catch (Exception e) 
    19         {
    20             Console.WriteLine("The process failed: {0}", e.ToString());
    21         }
    22     }
    23 }

    在获取不同资源的时候,只需要对不同类型的资源加以不同的过滤标签,
    例如:
    过滤器,若以t:开头,表示用unity的方式过滤;若以f:开头,表示用windows的SearchPattern方式过滤;若以r:开头,表示用正则表达式的方式过滤
    再根据过滤标签,获取不同的资源路径即可

  • 相关阅读:
    资源链接
    Silverlight4 RIA应用开发
    社会心理学(第8版)
    C# 2.0 锐利体验
    C# 3.0 锐利体验
    C#面向对象设计模式纵横谈
    ASP.NET MVC2程序开发入门到精通
    Silverlight数独游戏
    StringBuilder研究和探索
    .NET 开发从入门到精通
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/9934358.html
Copyright © 2011-2022 走看看