前言
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