美文网首页
Unity杂文——AssetDatabase资源数据库

Unity杂文——AssetDatabase资源数据库

作者: 脸白 | 来源:发表于2023-09-28 06:00 被阅读0次

原文地址

前言

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>

相关文章

  • Unity学习—资源管理概览

    本文介绍了 Unity 常用四种默认路径,以及 AssetDataBase、Resources、AssetBund...

  • 【Unity】AssetDatabase加载浅析

    最近大哥让我写一个小工具,发现这个东西很是安逸,可以结合c#文件操作的那一套,用着接口很是顺手。这个其实就可以分为...

  • Unity动画切割

    一定要调用AssetDatabase.ImportAsset 重新导入资源;否则这里对资源的更改,在工程视图下的文...

  • Editor工具类集合

    AssetDataBase 管理assets的各种接口,避免使用FileSystem带来的资源引用丢失等问题。脚本...

  • AssetDatabase的灵活运用

    前言 Unity种提供了AssetDatabase这个类,可以做很多事情,比如在编辑器模式下加载模型,获取当前物体...

  • Unity中资源依赖关系获取优化

    今天和大家分享一个优化经验,主要关于获取一个资源的依赖资源列表即对AssetDatabase.GetDepende...

  • Unity里的AssetDataBase简单介绍

    CreateAsset()使用这个方法我们可以生成一个文件在我们制定的路径里,例如 其中我们找到Gameobjec...

  • 预设删除Missing空脚本

    方法一 : 遍历AssetDatabase资源 注意点 一定要遍历完Component[] , 如果有null则p...

  • AssetDatabase

    AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”)。直观地说就是管理整...

  • UnityAssetDatabase

    AssetDatabase动态加载

网友评论

      本文标题:Unity杂文——AssetDatabase资源数据库

      本文链接:https://www.haomeiwen.com/subject/zwrkbdtx.html