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

AssetImportContext.GetReferenceToAssetMainObject

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交的内容,但我们确实阅读了来自用户的所有建议更改,并在适用的情况下进行更新。

关闭

提交失败

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

关闭

取消

声明

public Object GetReferenceToAssetMainObject(string path);

参数

path 获取引用的资源位置。

返回

Object 如果资源存在且已导入,则返回主资源实例,否则返回 null。

描述

从给定路径返回主资源(如果存在),如果它是主资源类型,则自动添加对该路径的依赖关系。

如果在导入期间调用此方法,则当前导入的资源将在以下情况下重新导入:- 在给定路径添加资源,- 给定路径上资源的类型发生变化,- 给定路径上的现有资源被删除或移动。

如果返回的资源用于超过引用,例如读取其内容和使用其值,则应使用 AssetImportContext.DependsOnArtifactAssetImportContext.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); } }