Table of Contents

Unity自定义数据类型


Import Setting

当你向Unity工程中导入一个未知类型(Unity不知道的)的素材后,它会被显示为Default Asset

那么,如何让Unity识别它的类型呢?

使用以下代码:

Importer代码

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

SO代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
// Unity中识别的数据格式
public class GzhData : ScriptableObject
{
    public string Content;
}

重新导入资源

右键点击资源,可以选择Reimport;资源本身更新的时候,Unity也会重新导入。Unity会以自定义的方式读入资源,但是并不会修改资源本身的内容。

在代码中使用AssetDatabase.ImportAsset重新导入资源