资源数据库 AssetDatabase

制作unity导出spine和模型预制体的工具 题外话,策划觉得多材质的spine导出后的名字不行,还要去修改一下spine资源导入时生成的文件名,在AsssetUtility中的IngestSpineAtlas静态方法中修改相关细节 对于资源修改最后一定要调用AssetDataBase.SaveAssets()和AssetDataBase.Refresh(),这样才会弹出提示要保存修改,不然使用的人以为就做完了,他们是不知道还需要做什么操作的,因为他们可能是策划或者美术。 关于fbx文件的材质设置,饶了个弯,importerMaterials设置为 阅读详情

AssetDatabase is an API which allows you to access the assets contained in your project. Among other things, it provides methods to find and load assets and also to create, delete and modify them. The Unity Editor uses the AssetDatabase internally to keep track of asset files and maintain the linkage between assets and objects that reference them. Since Unity needs to keep track of all changes to the project folder, you should always use the AssetDatabase API rather than the filesystem if you want to access or modify asset data.

AssetDatabase是一个API,它允许您访问您的项目中的资源。它提供了查找资源、加载资源、创建资源,删除资源和修改资源的方法。Unity编辑器内部使用AssetDatabase保持跟踪资源文件和保持资源与引用它们的对象之间的关联。由于Unity需要保持跟踪项目文件夹中的所有更改,如果你想访问或修改的资源数据,你应该始终使用AssetDatabase API,而不是文件系统。

The AssetDatabase interface is only available in the editor and has no function in the built player. Like all other editor classes, it is only available to scripts placed in the Editor folder (just create a folder named Editor in the main Assets folder of your project if there isn't one already).

AssetDatabase接口仅在编辑器中可用,在内置播放器没有这功能。像所有其他编辑器类,它是只适用于放置在Editor文件夹下的脚本(如果没有的话,在主资源项目文件夹下创建一个命名为Editor的文件夹。)。

Importing an Asset 导入资源

Unity normally imports assets automatically when they are dragged into the project but it is also possible to import them under script control. To do this you can use the AssetDatabase.ImportAsset method as in the example below.

Unity的资源通常在拖动到项目时自动导入,但它也可以在脚本控制下导入。要做到这一点,你可以使用AssetDatabase.ImportAsset函数(方法)。就像下面的例子:

using UnityEngine;
using UnityEditor;

public class ImportAsset {
	[MenuItem ("AssetDatabase/ImportExample")]
	static void ImportExample ()
	{
		AssetDatabase.ImportAsset("Assets/Textures/texture.jpg", ImportAssetOptions.Default);
	}
}

You can also pass an extra parameter of type AssetDatabase.ImportAssetOptions to the AssetDatabase.ImportAsset call. The scripting reference page documents the different options and their effects on the function's behaviour.

您还可以传递一个额外的AssetDatabase.ImportAssetOptions类型的参数,调用AssetDatabase.ImportAsset。脚本参考页记载着不同的选项以及不同选项对函数行为的作用。

Loading an Asset 加载资源

The editor loads assets only as needed, say if they are added to the scene or edited from the Inspector panel. However, you can load and access assets from a script using AssetDatabase.LoadAssetAtPath, AssetDatabase.LoadMainAssetAtPath, AssetDatabase.LoadAllAssetRepresentationsAtPath andAssetDatabase.LoadAllAssetsAtPath. See the scripting documentation for further details.

编辑器仅在需要时加载资源,如果资源被添加到场景或在检视面板编辑。但是,您可以用脚本来加载和访问资源,使用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

Since Unity keeps metadata about asset files, you should never create, move or delete them using the filesystem. Instead, you can useAssetDatabase.Contains, AssetDatabase.CreateAsset, AssetDatabase.CreateFolder, AssetDatabase.RenameAsset, AssetDatabase.CopyAsset,AssetDatabase.MoveAsset, AssetDatabase.MoveAssetToTrash and AssetDatabase.DeleteAsset.

由于Unity保留有关资源文件的元数据,你不该使用文件系统创建,移动或删除它们。相反,你可以使用AssetDatabase.Contains, AssetDatabase.CreateAsset,AssetDatabase.CreateFolder, AssetDatabase.RenameAsset, AssetDatabase.CopyAsset, AssetDatabase.MoveAsset, AssetDatabase.MoveAssetToTrash andAssetDatabase.DeleteAsset。

public class AssetDatabaseIOExample {
	[MenuItem ("AssetDatabase/FileOperationsExample")]
	static void Example ()
	{
		string ret;

		// Create
		Material material = new Material (Shader.Find("Specular"));
		AssetDatabase.CreateAsset(material, "Assets/MyMaterial.mat");
		if(AssetDatabase.Contains(material))
			Debug.Log("Material asset created");

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

		// Create a Folder
		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");

		// Move
		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);

		// Copy
		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");
		// Manually refresh the Database to inform of a change
		AssetDatabase.Refresh();
		Material MaterialCopy = AssetDatabase.LoadAssetAtPath("Assets/MyMaterialNew.mat", typeof(Material)) as Material;

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

		// Delete
		if(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 changes
		AssetDatabase.Refresh();
	}
}

Using AssetDatabase.Refresh 使用AssetDatabase.Refresh

When you have finished modifying assets, you should call AssetDatabase.Refresh to commit your changes to the database and make them visible in the project.

当你完成修改资源,你应该调用AssetDatabase.Refresh来提交更改到数据库,并使他们在项目可见。

原文地址:http://www.ceeger.com/Manual/AssetDatabase.html

Unity3D技术之资源数据库 (AssetDatabase)详解 【狗刨学习网】 资源数据库 (AssetDatabase) 资源数据库 (AssetDatabase) 是允许您访问工程中的资源的 API。此外,其提供方法供您查找和加载资源,还可创建、删除和修改资源。Unity 编辑器 (Editor) 在内部使用资源数据库 (AssetDatabase) 追踪资源文件,并维护资源和引用资源的对象之间的关联。Unity 需要追踪工程文件夹发生的所 阅读详情

相关推荐

Unity .unitypackage导出导入原理与精准备份实践

.unitypackage是Unity基于GUID的资产快照封装格式,而非普通ZIP压缩包——其核心依赖manifest.json元数据、pathname路径映射和assets序列化数据。理解这一机制,是规避Missing Script、GUID冲突、幽灵依赖等高频问题的技术前提。它直接关联Asset Database底层行为、脚本编译顺序、Prefab变体维护等关键工程环节,在团队协作、CI/CD和模块化交付中构成可审计备份体系的基础。本文深入解析其结构本质,并提供不依赖第三方插件的原生精准导出策略与防御

weixin_30878501的博客 540

unity stuck on initialize asset database

unity开启项目一直停留在initialize asset database refresh。我目前尝试了一个方法,解决了这个问题,大家不妨可以试一试。

qq_46063425的博客 4205

Unity3D 学习从简单开始-AssetDatabase的使用

今天,为大家分享一下AssetDatabase的功能点,AssetDatabase是一个对资源进行读写和各种操作的接口; 然而因为这是一个编辑类,当需要使用的时候把他放在工程目录下的Assets/Editor 文件夹下,编辑器类还需要 在UnityEditor 的命名空间下。欢迎加我的学习交流群:575561285。       好吧!废话不多讲,我直接用AssetDatabase中

Cici_coach的博客 1万+

Unity编辑器AssetDatabase函数API用法中文详解-Chinar教程

AssetDatabase 函数用法汇总 本文提供全流程,中文翻译 助力快速理解 AssetDatabase API 用法 为初学者节省宝贵的时间,避免采坑! AssetDatabase 类,在Unity 编辑器扩展中,是一个非常常用的类 其API函数,为我们开发编辑器功能提供了许多便利 涉及、文件、路径、目录、资源移动等等… AddObjectToAsset —— 添加对象到资源 CopyAsset —— 拷贝资源

Chinar优快云的博客 7866

莫比乌斯反演

本文从算法竞赛和数论角度出发,系统介绍了狄利克雷卷积与莫比乌斯反演的核心概念。首先定义了数论函数及其基本性质,重点阐述了狄利克雷卷积的代数结构(交换环)和关键恒等式(如μ*1=ε)。随后通过卷积视角简化了莫比乌斯反演的证明过程。最后将理论提升至抽象代数层面,揭示这些数论工具本质上是偏序集关联代数在整除关系下的特例,其中莫比乌斯函数对应Zeta函数的逆元。全文展现了数学概念从具体到抽象的升华过程,为理解这些工具提供了更深刻的代数视角。

aichitang2024的博客 391

电池管理系统(BMS)系列—状态估计之SOH

BMS系列文章,介绍了SOH估计

zxx52113140的博客 1846

搞Unity开发遇到的一些坑

在Resources下文件是只读的 报Null错误可能是调用顺序导致获取不到对象

Sky.Allen的博客 1541

如何通过CAD图中的坐标来确定是哪个坐标系

地理坐标系:为球面坐标。参考平面地是椭球面,坐标单位:经纬度。以地球参考为例,坐标系就相当于整个地球,而地理坐标系就是椭球状的完整的立体地球。所以我们可以看到生活中的数据与地图是一定含有地理坐标系的,因为他是客观上来说确确实实存在的。投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等。这就相当于把地球当成一个橘子,然后一刀切开,把橘子皮平面铺开,这个过程就是地理投影的过程。严谨一点来说就是建立一个参考系统,按照对应位置把椭球体投射到平面。那坐标系统主要有那些呢?北京54。

vjmap的博客 2万+

AssetDatabase 资源数据库

AssetDatabase is an API which allows you to access the assets contained in your project. Among other things, it provides methods to find and load assets and also to create, delete and modify them...

weixin_30236595的博客 373

硅光芯片边耦合器综述(一)

摘要:硅光子学在过去几十年间吸引了越来越多的关注,由于其具有诸多优点,如极低的成本、硅的高折射率带来的高集成密度,以及与现有半导体制造工艺的兼容性,被认为是未来日常应用中的一项充满前景的关键技术。在硅光子集成电路中,光互连是一个重要的问题,而在数据中心和光传输系统等应用场景中,光纤到芯片的光互连至关重要。光纤到芯片的光学耦合主要分为两大类:面外耦合(off-plane coupling)和面内耦合(in-plane coupling)。光栅耦合器属于前者,而边耦合器则属于面内耦合。本文主要关注硅光子集成电路

jhbfsoagoodgio的博客 5041

libnice和coturn这两个库有交叉实现的地方,具体有啥区别?

TurnAdmin:是一个TURN的管理工具,此工具能被用来管理用户账号的增删改查。 TurnServer:是TURN和STUN的服务器实现。 Turnutils_uclient: 模拟多个UDP、TCP、TLS或DTLS客户端 Turnutils_peer: 一个简单的无状态UDP-ECHO服务器,用作中继模式中的最终服务器 Turnutils_stunclient: 一个简单的STUN客户端例子 Turnutils_rfc5769check: 检查STUN/TURN协议实现的正确性。 我们..

Langeldep的专栏 1319

【unity】AssetDatabase文档翻译

AssetDatabase文档翻译AssetDatabase是一个能获取工程资源的API,它提供一些方法比如:查找、加载、创建、删除和修改。Unity需要了解工程文件夹里的所有改变,假如想要获取或修改资源文件,就使用AssetDatabase的API而不是文件IO流。导入资源Unity导入资源通常是用鼠标手动拖动到工程面板里,但是也可能需要脚本控制资源的导入,为了使用脚本...

weixin_34268579的博客 131

RandLA-Net Tensorrt 推理 c++

RandLA-Net 实现 Tensorrt 部署.

J。 1109

Unity 资源数据库(The Asset Database)

本文解析了Unity中AssetDatabase的核心机制与实践方法。AssetDatabase负责将原始资源转换为硬件友好格式,通过依赖跟踪和缓存管理提高效率。它由源资产数据库和Artifact数据库组成,支持自动化资源操作。文章详细介绍了资源导入/加载API、文件操作规范,以及平台切换时的重导入机制。重点说明了AssetDatabase V2在缓存优化和平台适配方面的改进,为开发者提供了高效管理Unity资源的系统方案。

分享知识,拥抱变化 1151

Three 之 three.js (webgl)绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool

Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。本节介绍, three.js (webgl) 中绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool,主要是给实物绘制线框,有点像AI 识别正方形包裹框的效果。其中,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

仙魁XAN 2106

uniApp微信小程序:error: 60001 request:fail errcode:-101 cronet error code:-101error_msg:net::ERR CONNECTI

uni-app微信小程序域名访问报error 60001 request:fail errcode:-101,解决Uniapp微信小程序报600001错误,uni.request()接口请求报错,服务器更换SSL证书后,uniapp微信小程序出现`request:fail errcode:-101`问题分析与解决,服务器更换ssl证书后,手机访问微信小程序异常,微信小程序更换SSL证书后出现请求报错,服务器更换SSL证书,微信小程序报600001,小程序反应偶尔出现request:fail errcode:

✅ 精选推荐文章 4583

Unity预制体未即时刷新

有时候在用代码修改预制体某个组件中的属性时,可能原本预制体未及时刷新:可以使用PrefabUtility.SavePrefabAsset(gameobject)等函数,使得使用代码修改之后马上刷新生效。

weixin_43932372的博客 950

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Unity文件重命名、文件夹检测与复制操作完全指南

在Unity开发过程中,我们经常需要在编辑器脚本中对项目内的资源进行操作,包括创建、重命名、复制文件或文件夹等。本文将详细介绍Unity中常用的资源操作方法,并结合实际项目案例进行说明。Unity提供了类来处理项目资源,该类只能在编辑器环境下使用,因此相关代码需要使用预编译指令保护。Unity的所有相关代码必须在编辑器环境下运行正确处理路径和扩展名及时进行错误处理操作完成后刷新资源数据库遵循项目规范,使用正确的文件夹检测方法。

飞浪纪元FE的博客 1330

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Unity使用AssetDatabase编辑器资源管理之美

Unity的资源管理模式分为两种: 1.在编辑器内管理,使用assetdatabase 加载卸载资源 2.运行时管理,简单化使用resource,复杂化使用asset bundle 使用AssetDatabase在编辑器内加载卸载资源,并不能在游戏发布时使用,它只能在编辑器内使用。 1、加载/卸载资源 using UnityEngine; using System.Col...

游戏开发、游戏引擎开发、逆向破解爱好者 939

AssetDatabase的方法总结

AssetDatabase的方法总结 1、AssetDatabase.FindAssets public static string[] FindAssets(string filter);public static string[] FindAssets(string filter, string[] searchInFolders); filter 该筛选器字符串可以包含:...

weixin_34127717的博客 7561

unity 输出指定文件夹下的所有文件

记录unity输出指定文件下的所有文件并保存成配置文件

weixin_50702814的博客 703

Unity 编辑器中Copy文件从一个文件夹到另一个文件夹

记录知识点

weixin_50702814的博客 1674

Unity3D笔记十九 持久化数据

1、PlayerPrefs类(生命周期???) 1.1 保存与读取数据   在C#中类似缓存、Cookie、Session等保存数据的,但是有点区别的是在C#中如果在取值时没有取到默认值则返回值是NULL,但Unity中如GetInt("Test", 100); 在取值Test时如果没有默认值则直接返回的是100;   在Unity中提供了一个用于本地持久化保存与读取数据的类——Player...

weixin_34117522的博客 192

AssetDatabase的方法

静态函数 描述 AddObjectToAsset 添加对象到资产 AllowAutoRefresh 递减一个内部计数器,Unity使用它来决定是否允许自动的资产数据库刷新行为。 AssetPathToGUID 获得资产的GUID ClearLabels 删除所有资产标签 Contains 对象在资产数据库中返回true,在场景中返回false CopyAsset 复制资产 CreateAsset 创建资产 CreateFo...

liquanyi007的博客 1493
上一篇: BuildAssetBundleOptions 资源包编译选项
下一篇: 如何进行svn relocate 操作
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值