unity编译器 Selection,AssetDatabase,EditorUtility (AssetDatabase基础篇)

关于AssetDatabase类懂得不多我把我知道的几个Apl写了出来

(等以后我了解的再深一点我会把其他APL进行补充)

其中也有我对这些APl的理解

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

public class AssetDatabases
{

    [MenuItem("AssetDatabase/Contains")]
    static void Contains()
    {
        // AssetDatabase.Contains 判断一个物体是否是资源(在场景的中的物体不算资源)
        var aa = AssetDatabase.Contains(Selection.activeObject);
        Debug.Log(aa);
    }
    [MenuItem("AssetDatabase/CopyAsset")]
    static void CopyAsset()
    {
        //AssetDatabase.CopyAsset 将路径里所有的东西都复制到你的新路径(注意不会删除原来的目录)
        //注意千万不要复制到Streaminghsseta路径下假设是一个材质球复制到Streaminghssets路经下他会变成文本文件二进制一样
        //如果传的是物体切记一定要写正确的后缀名
        var aa = AssetDatabase.CopyAsset("Assets/abc/New Material.mat", "Assets/Material.mat");
        Debug.Log(aa);
    }
    [MenuItem("AssetDatabase/CreateAsset")]
    static void CreateAsset()
    {
        //AssetDatabase.CreateAsset 你在代码里创建的物体放入对应的目录下(注意有后缀名)
        //注意预制件是不可以创建的如果想创建有其他API
        Material material = new Material(Shader.Find("Standard"));
         AssetDatabase.CreateAsset(material, "Assets/Resources/material.mat");
    }
    [MenuItem("AssetDatabase/CreateFolder")]
    static void CreateFolder()
    {
       //参数1:是你想放入的父文件参数2:是你的子文件作用创建目录
        AssetDatabase.CreateFolder("Assets", "My Folder");
    }
    [MenuItem("AssetDatabase/GUIDToAssetPath")]
    static void GUIDToAssetPath()
    {
        //可以帮我们查找所有的后缀名为prefab类型的物体
        //返回回来的guid代表物体的身份证
        //可以通过AssetDatabase.GUIDToAssetPath 来获取他完整的路径
        var guid = AssetDatabase.FindAssets("t:prefab");
        foreach (var item in guid)
        {
            Debug.Log(item);
            string path = AssetDatabase.GUIDToAssetPath(item);
            Debug.Log(path);
        }
    }
    [MenuItem("AssetDatabase/FindAssets")]
    static void FindAssets()
    {
        //可以帮我们查找所有的后缀名为prefab类型的物体
        //返回回来的guid代表物体的身份证
        var guid = AssetDatabase.FindAssets("t:prefab");
        foreach (var item in guid)
        {
            Debug.Log(item);
        }
    }
    [MenuItem("AssetDatabase/LoadAssetAtPath")]
    static void LoadAssetAtPath()
    {
        //可以帮我们查找所有的后缀名为prefab类型的物体
        //返回回来的guid代表物体的身份证
        //可以通过AssetDatabase.GUIDToAssetPath 来获取他完整的路径
        //AssetDatabase.LoadAssetAtPath 加载路径的物体
        var guid = AssetDatabase.FindAssets("t:prefab");
        foreach (var item in guid)
        {
            Debug.Log(item);
            string path = AssetDatabase.GUIDToAssetPath(item);
            Debug.Log(path);
            
            AssetDatabase.LoadAssetAtPath<GameObject>(path);
        }
    }
    [MenuItem("AssetDatabase/DeleteAsset")]
    static void DeleteAsset()
    {
        //删除工程下任何东西
        var bools = AssetDatabase.DeleteAsset("Assets/Resources/abc");
        Debug.Log(bools);
    }
    [MenuItem("AssetDatabase/IsValidFolder")]
    static void IsValidFolder()
    {
        //给他一个路径它判断它是否是场景中的目录
        var bools = AssetDatabase.IsValidFolder("Assets/Resources/abc");
        Debug.Log(bools);
    }
    [MenuItem("AssetDatabase/LoadAllAssetsAtPath")]
    static void LoadAllAssetsAtPath()
    {
        //可以将我们九宫格切割完的图片都打印出来返回类型0bject数组
        var objets = AssetDatabase.LoadAllAssetsAtPath("Assets/aa.jpg");
        foreach (var item in objets)
        {
            Debug.Log(objets);
        }
    }
    [MenuItem("AssetDatabase/MoveAsset")]
    static void MoveAsset()
    {
    // 参数数1 oldpath是之前的路径 参数2 newpath 是改完之后的路径
         var objets = AssetDatabase.MoveAsset("Assets/Folder", "Assets/Resources/Folder");
       
    }
    [MenuItem("AssetDatabase/Refresh")]
    static void Refresh()
    {
        //刷新 project的界面
        AssetDatabase.Refresh();
    }


}

猜你喜欢

转载自blog.csdn.net/qq_57896821/article/details/121283077
今日推荐