path | 获取引用的资源位置。 |
Object 如果资源存在且已导入,则返回主资源实例,否则返回 null。
从给定路径返回主资源(如果存在),如果它是主资源类型,则自动添加对该路径的依赖关系。
如果在导入期间调用此方法,则当前导入的资源将在以下情况下重新导入:- 在给定路径添加资源,- 给定路径上资源的类型发生变化,- 给定路径上的现有资源被删除或移动。
如果返回的资源用于超过引用,例如读取其内容和使用其值,则应使用 AssetImportContext.DependsOnArtifact 或 AssetImportContext.DependsOnSourceAsset。
例如,此方法应该用于引用添加到或在导入期间创建的纹理。由于我们只是在材质中设置对纹理的引用,因此当纹理本身发生变化时,无需重新导入,而只在将纹理添加到项目或从项目中删除纹理时才需要重新导入。
using UnityEngine; using UnityEditor.AssetImporters;
[ScriptedImporter(1, "customMaterial")] public class MaterialCreatorExample : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { var mat = new Material(Shader.Find("Standard")); var texturePath = $"{System.IO.Path.GetDirectoryName(ctx.assetPath)}/{System.IO.Path.GetFileNameWithoutExtension(ctx.assetPath)}_Diffuse.png"; mat.mainTexture = ctx.GetReferenceToAssetMainObject(texturePath) as Texture2D; ctx.AddObjectToAsset("mat", mat); } }