Unity杂文——AssetDatabase资源数据库

原文地址

前言

unity中有个类,叫做AssetDatabase,这是一个在编辑器(Editor)下使用的一个类,是一个允许您访问工程中资源的API。这个类包含了查找、加载、创建、删除和修改资源等。这个类仅适用于编辑器状态下。

导入资源

unity不仅仅可以通过拖拽导入资源,还可以通过脚本导入资源,代码如下:

sing UnityEngine;
using UnityEditor;
 
public class ImportAsset 
{
    [MenuItem ("AssetDatabase/ImportExample")]
    static void ImportExample ()
    {
        AssetDatabase.ImportAsset("资源路径+资源名字", ImportAssetOptions.Default);
    }
}

加载资源

加载资源有很多API,大家可以参考API手册进行操作,加载API包含:

AssetDatabase.LoadAssetAtPath
AssetDatabase.LoadMainAssetAtPath
AssetDatabase.LoadAllAssetRepresentationsAtPath
AssetDatabase.LoadAllAssetsAtPath

参考下面案例进行使用:

using UnityEngine;  
using UnityEditor;  
public class ImportAsset 
{   
    [MenuItem ("AssetDatabase/LoadAssetExample")]
    static void ImportExample ()    
    {   
        Texture2D t = AssetDatabase.LoadAssetAtPath("Assets/Textures/texture.jpg", typeof(Texture2D)) as Texture2D; 
    }   
}

操作文件

更改提交至数据库

这里提前声明一下,修改完资源后应该调用AssetDatabase.Refresh 将更改提交至数据库,并使其显示在工程中。

创建资源

创建文件的API是:CreateAsset

Material material = new Material (Shader.Find(“Specular”));
AssetDatabase.CreateAsset(material, “Assets/MyMaterial.mat”);   
if(AssetDatabase.Contains(material))    //判断是否包含这个资源
    Debug.Log(“Material asset created”);

创建文件夹

创建文件夹:CreateFolder

ret = AssetDatabase.CreateFolder("Assets", "NewFolder");
if(AssetDatabase.GUIDToAssetPath(ret) != "")
    Debug.Log("Folder asset created");
else
    Debug.Log("Couldn‘t find the GUID for the path");

重命名

给文件夹重新命名:RenameAsset

ret = AssetDatabase.RenameAsset(“Assets/MyMaterial.mat”, “MyMaterialNew”);
if(ret == “”)
    Debug.Log(“Material asset renamed to MyMaterialNew”);   
else
    Debug.Log(ret);

移动资源位置

移动资源所在的位置:MoveAsset
得到资源所在路径:GetAssetPath

ret = AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(material), "Assets/NewFolder/MyMaterialNew.mat");
if(ret == "")
    Debug.Log("Material asset moved to NewFolder/MyMaterialNew.mat");
else
    Debug.Log(ret);

复制资源

复制一个资源:CopyAsset

if(AssetDatabase.CopyAsset(AssetDatabase.GetAssetPath(material), "Assets/MyMaterialNew.mat"))
    Debug.Log("Material asset copied as Assets/MyMaterialNew.mat");
else
    Debug.Log("Couldn‘t copy the material");

移动到回收站

把资源移动到回收站:MoveAssetToTrash

if(AssetDatabase.MoveAssetToTrash(AssetDatabase.GetAssetPath(MaterialCopy)))
    Debug.Log("MaterialCopy asset moved to trash");

删除资源

删除一个资源或文件夹:DeleteAsset

if(AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(material)))
    Debug.Log("Material asset deleted");
if(AssetDatabase.DeleteAsset("Assets/NewFolder"))
    Debug.Log("NewFolder deleted");

官方API网址:<font color=steelblue size=3>https://docs.unity3d.com/ScriptReference/AssetDatabase.html</font>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容