Unity AssetDatabase类
来源:互联网 发布:法国劳动法改革 知乎 编辑:程序博客网 时间:2024/06/05 07:16
AssetDatabase,它允许您访问您的项目中的资源。它提供了查找资源、加载资源、创建资源,删除资源和修改资源的方法。Unity编辑器内部使用AssetDatabase保持跟踪资源文件和保持资源与引用它们的对象之间的关联。由于Unity需要保持跟踪项目文件夹中的所有更改,如果你想访问或修改的资源数据,你应该始终使用AssetDatabase API,而不是文件系统。
AssetDatabase接口仅在编辑器中可用,在内置播放器没有这功能。像所有其他编辑器类,它是只适用于放置在Editor文件夹下的脚本(如果没有的话,在主资源项目文件夹下创建一个命名为Editor的文件夹。)。
Importing an Asset 导入资源
Unity的资源通常在拖动到项目时自动导入,但它也可以在脚本控制下导入。要做到这一点,你可以使用AssetDatabase.ImportAsset函数(方法)。就像下面的例子:
using UnityEngine;using UnityEditor;public class ImportAsset {[MenuItem ("AssetDatabase/ImportExample")]static void ImportExample (){AssetDatabase.ImportAsset("Assets/Textures/texture.jpg", ImportAssetOptions.Default);}}
Loading an Asset 加载资源
编辑器仅在需要时加载资源,如果资源被添加到场景或在检视面板编辑。但是,您可以用脚本来加载和访问资源,使用AssetDatabase.LoadAssetAtPath, AssetDatabase.LoadMainAssetAtPath, AssetDatabase.LoadAllAssetRepresentationsAtPath and 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;}}
File Operations using the AssetDatabase 文件操作使用AssetDatabase
当你完成修改资源,你应该调用AssetDatabase.Refresh来提交更改到数据库,并使他们在项目可见。public class AssetDatabaseIOExample {[MenuItem ("AssetDatabase/FileOperationsExample")]static void Example (){string ret;// CreateMaterial material = new Material (Shader.Find("Specular"));AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");if(AssetDatabase.Contains(material))Debug.Log("Material asset created");// Renameret = AssetDatabase.RenameAsset("Assets/MyMaterial.mat", "MyMaterialNew");if(ret == "")Debug.Log("Material asset renamed to MyMaterialNew");elseDebug.Log(ret);// Create a Folderret = AssetDatabase.CreateFolder("Assets", "NewFolder");if(AssetDatabase.GUIDToAssetPath(ret) != "")Debug.Log("Folder asset created");elseDebug.Log("Couldn't find the GUID for the path");// Moveret = AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(material), "Assets/NewFolder/MyMaterialNew.mat");if(ret == "")Debug.Log("Material asset moved to NewFolder/MyMaterialNew.mat");elseDebug.Log(ret);// Copyif(AssetDatabase.CopyAsset(AssetDatabase.GetAssetPath(material), "Assets/MyMaterialNew.mat"))Debug.Log("Material asset copied as Assets/MyMaterialNew.mat");elseDebug.Log("Couldn't copy the material");// Manually refresh the Database to inform of a changeAssetDatabase.Refresh();Material MaterialCopy = AssetDatabase.LoadAssetAtPath("Assets/MyMaterialNew.mat", typeof(Material)) as Material;// Move to Trashif(AssetDatabase.MoveAssetToTrash(AssetDatabase.GetAssetPath(MaterialCopy)))Debug.Log("MaterialCopy asset moved to trash");// Deleteif(AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(material)))Debug.Log("Material asset deleted");if(AssetDatabase.DeleteAsset("Assets/NewFolder"))Debug.Log("NewFolder deleted");// Refresh the AssetDatabase after all the changesAssetDatabase.Refresh();}}
0 0
- Unity AssetDatabase类
- Unity AssetDatabase和Resources资源管理
- AssetDatabase
- 简单总结Unity使用AssetDatabase编辑器资源管理
- Unity Manual之资源数据库 (AssetDatabase)
- unity Bug(1)UnityEditor.UI.dll' is in timestamps but is not known in assetdatabase
- AssetBundle 3 (AssetDatabase.GetAllAssetBundleNames and AssetDatabase.GetAllAssetBundleNames)
- AssetDatabase文档翻译
- 资源数据库 AssetDatabase
- Unity3d AssetDatabase.SetLabels StartAssetEditing ValidateMoveAsset 语法复习
- Unity3D技术之资源数据库 (AssetDatabase)详解
- Unity3D技术之资源数据库 (AssetDatabase)详解
- 解决错误:OnAssignMaterial must return a persistent material (AssetDatabase.CreateAsset)
- Unity3D 学习从简单开始-AssetDatabase的使用
- Unity Editor 编写unity插件类
- Unity基础四个类
- 关于unity中的类
- Unity 核心类
- 编译器自动创建的析构函数
- [网络原理]TCP连接是由客户端主动建立的吗?
- Java 根据 HashMap 的 value 进行排序
- Spring(五):事务的传播行为和隔离级别
- 【Java】抽象类
- Unity AssetDatabase类
- Windows 下安装 setuptools 步骤
- java中的StringBuffer类
- HDU——1087 Super Jumping! Jumping! Jumping!
- gradle使用资料
- Linux内核中几个比较有意思的解释(进程调度算法,页面调度算法,非线性工作集)
- 数据库-多线程安全
- https 相关文章记录
- 打印字符串的全排列