版本:Unity 6 (6000.0)
语言中文
  • C#

AssetDatabase.StartAssetEditing

建议修改

成功!

感谢您帮助我们提高 Unity 文档质量。尽管我们无法接受所有提交的建议,但我们确会认真阅读用户建议的每次修改,并在必要时进行更新。

关闭

提交失败

由于某种原因,无法提交您建议的修改。请在几分钟后重试。感谢您抽出时间帮助我们提高 Unity 文档质量。

关闭

取消

声明

public static void StartAssetEditing();

说明

将 Asset Database 置于暂时禁止自动导入的状态,允许您将多个资产导入分组在一起,以形成一次大型导入。

此方法允许您暂停 Asset Database 对新的或者已修改资产的自动导入。如果您想通过脚本对资产执行多个修改操作,且不想让 Asset Database 在单独的导入过程中导入每个修改,那么此方法就很有用。

您还可以暂停导入,执行多个修改,再恢复导入,这意味着 Unity 只会为在导入暂停期间您所执行的全部修改执行一次输入流程,如下例所示。

using UnityEngine;
using UnityEditor;

public class StartStopAssetEditingExample : MonoBehaviour { [MenuItem("APIExamples/StartStopAssetEditing")] static void CallAssetDatabaseAPIsBetweenStartStopAssetEditing() { try { //Place the Asset Database in a state where //importing is suspended for most APIs AssetDatabase.StartAssetEditing();

AssetDatabase.CopyAsset("Assets/CopyAsset.txt", "Assets/Text/CopyAsset.txt"); AssetDatabase.MoveAsset("Assets/MoveAsset.txt", "Assets/Text/MoveAsset.txt"); } finally { //By adding a call to StopAssetEditing inside //a "finally" block, we ensure the AssetDatabase //state will be reset when leaving this function AssetDatabase.StopAssetEditing(); } } }

注意:AssetDatabase.StartAssetEditing 将 Asset Database 置于在调用AssetDatabase.StopAssetEditing之前禁止导入的状态。这意味着如果在这两个函数调用之间出现异常,那么 AssetDatabase 将无响应。因此,您应该始终在try..catch 块try..finally 块(视需要而定)中放置对AssetDatabase.StartAssetEditingAssetDatabase.StopAssetEditing的调用。

还要注意:在AssetDatabase.StartAssetEditingAssetDatabase.StopAssetEditing之间的暂停状态下,某些 AssetDatabase API 无法按预期工作。这是因为在暂停状态下创建的资产在调用 StopAssetEditing 之前并非在资产数据库中完全创建。经验法则是,您应该将更多涉及 AssetDatabase API 的使用推迟到AssetDatabase.StopAssetEditing调用之后,并且将AssetDatabase.StartAssetEditing/AssetDatabase.StopAssetEditing范围保留用于不需要所涉及资产得到完全导入的操作。

还可以通过在 using 语句中使用 AssetDatabase.AssetEditingScope 类暂停和恢复资源数据库导入,这是一种类似的替代方式。