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

AssetImportContext.DependsOnCustomDependency

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public void DependsOnCustomDependency(string dependency);

参数

dependency 依赖项的名称。您可以使用任何您喜欢的名称,但由于这些名称在所有资源中都是全局的,因此使用命名约定(例如,如下例所示的基于路径的命名系统)来避免与其他自定义依赖项名称冲突可能很有用。

描述

允许您指定资源具有自定义依赖项。

如果需要设置对无法表示为源资源依赖项或工件依赖项的某些内容的依赖项,请使用自定义依赖项。

using UnityEngine;
using UnityEditor.AssetImporters;
using UnityEditor.Experimental;
using UnityEngine.Assertions;
using UnityEditor;

class MySystem { public const string CustomDependencyName = "MyProject/Settings";

public static string GetSetting() { return "42"; }

public static void RegisterCustomDependency() { // You cannot register a custom dependency during the Asset Import process, so this method must be called before the Asset is imported. UnityEditor.AssetDatabase.RegisterCustomDependency(CustomDependencyName, Hash128.Compute(GetSetting())); } }

class SomeValue : ScriptableObject { public int value; }

[ScriptedImporter(1, "data", AllowCaching = true)] public class MyDataImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { ctx.DependsOnCustomDependency(MySystem.CustomDependencyName);

var someObj = ScriptableObject.CreateInstance<SomeValue>();

var setting = MySystem.GetSetting(); if (setting == "42") someObj.value = 100; else someObj.value = -1;

ctx.AddObjectToAsset("someObj", someObj); } }