Unity杂文——AssetDatabase资源数据库

  1. 前言
  2. 导入资源
  3. 加载资源
  4. 操作文件
    1. 更改提交至数据库
    2. 创建资源
    3. 重命名
    4. 移动资源位置
    5. 复制资源
    6. 移动到回收站
    7. 删除资源

原文地址

前言

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网址:https://docs.unity3d.com/ScriptReference/AssetDatabase.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 841774407@qq.com

×

喜欢就点赞,疼爱就打赏