Version: Unity 7.0 Alpha (7000.0)
LanguageEnglish
  • C#

AssetImportContext.DependsOnSourceAsset

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Declaration

public void DependsOnSourceAsset(string path);

Parameters

Parameter Description
path The project-relative path of the source file that this asset depends on.

Description

Sets up a dependency on the source file of the asset at a path.

A source dependency means that if the other asset's source file changes, Unity reimports this asset too. This is a dependency on the source file itself, not on the import result. To depend on the import result, use AssetImportContext.DependsOnArtifact. The path doesn't have to point to an existing asset. Unity records the location either way, so the importer runs again if an asset is later created at that path, or if the asset there is deleted. This lets an importer produce one result while the file is missing and a different result once it exists. Unity always interprets the string as a project-relative path, so a string in any other form registers a dependency on a location that never resolves. If you already have a GUID, use the overload that takes a GUID. The method throws an exception if path is null or empty.

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

Declaration

public void DependsOnSourceAsset(GUID guid);

Parameters

Parameter Description
guid The GUID of the source asset that this asset depends on.

Description

Sets up a dependency on the source file of the asset with the specified GUID.

A source dependency means that if the other asset's source file changes, Unity reimports this asset too. This is a dependency on the source file itself, not on the import result. To depend on the import result, use AssetImportContext.DependsOnArtifact. The method throws an exception if guid is empty.