当你向Unity工程中导入一个未知类型(Unity不知道的)的素材后,它会被显示为Default Asset
那么,如何让Unity识别它的类型呢?
使用以下代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; // 注意版本 #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; #endif [ScriptedImporter(1, "gzh")] // 文件后缀名 public class GzhImporter : ScriptedImporter { public override void OnImportAsset(AssetImportContext ctx) { // 导入的资源的一些信息 string assetPath = ctx.assetPath; string assetName = System.IO.Path.GetFileNameWithoutExtension(assetPath); Debug.Log("Import Gzh Data: " + assetPath); Debug.Log("Asset Name: " + assetName); // 创建资源 GzhData Data = ScriptableObject.CreateInstance<GzhData>(); // 导入资源的内容 Data.Content = System.IO.File.ReadAllText(ctx.assetPath); // 保存 ctx.AddObjectToAsset("Gzh_Data_" + assetName, Data); ctx.SetMainObject(Data); } }
using System.Collections; using System.Collections.Generic; using UnityEngine; // Unity中识别的数据格式 public class GzhData : ScriptableObject { public string Content; }
右键点击资源,可以选择Reimport;资源本身更新的时候,Unity也会重新导入。Unity会以自定义的方式读入资源,但是并不会修改资源本身的内容。
在代码中使用AssetDatabase.ImportAsset重新导入资源