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

AssetImportContext.DependsOnSourceAsset

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public void DependsOnSourceAsset(string path);

声明

public void DependsOnSourceAsset(GUID guid);

参数

path 源依赖项的路径。
guid 源资产依赖项的 guid。

描述

允许您指定一个资产直接依赖于另一个资产的源文件(而不是另一个资产的导入结果)。

当您指定一个资产依赖于另一个资产时(例如,资产 A 依赖于资产 B),这意味着如果资产 B 被修改,不仅资产 B 会被重新导入,而且资产 A 也会被重新导入。

注意:此方法建立了对资产源文件本身的依赖关系,而不是对资产的导入结果(工件)的依赖关系。如果您想建立对资产导入结果的依赖关系,请使用 DependsOnArtifact

using UnityEngine;
using UnityEditor;
using UnityEditor.AssetImporters;
using System.IO;

[ScriptedImporter(1, "cube")] public class CubeWithTextureImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

ctx.AddObjectToAsset("main obj", cube); ctx.SetMainObject(cube);

var material = new Material(Shader.Find("Standard"));

var lines = File.ReadAllLines(ctx.assetPath); var texturePath = lines[0]; var texture = AssetDatabase.LoadAssetAtPath<Texture>(texturePath); if (texture != null) { material.SetTexture("_MainTex", texture); // add a dependency on the texture, such that if it changes or moves, we reimport the asset ctx.DependsOnSourceAsset(texturePath); }

ctx.AddObjectToAsset("MaterialWithTexture", material); } }