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); } }