AssetImportContext.DependsOnCustomDependency
Declaration
public void DependsOnCustomDependency(string dependency);Параметры
| Параметр | Описание |
|---|---|
| зависимость | Имя зависимости. Вы можете использовать любое имя, которое вам нравится, но поскольку эти имена глобальны для всех ваших Assets, может быть полезно использовать соглашение об именовании (например, основанную на пути систему именования, как в примере ниже), чтобы избежать конфликтов с другими пользовательскими именами зависимости. |
Описание
Позволяет указать, что у ресурса есть пользовательская зависимость.
Используйте настраиваемую зависимость, если нужно установить зависимость от чего-то, что не может быть выражено как зависимость от исходного ассета или зависимость от артефакта.
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); } }