拓展編輯器 10 - 自定義資源導入

unity爲我們提供了自定義資源導入的流程,通過該流程,我們可以

  • 對導入的資源進行檢查,及預處理,比如檢查貼圖是否是2的n次冪,設置貼圖參數,創建預製等
  • 對unity無法識別的資源,加入導入流程

方法:派生 ScriptedImporter,並實現 OnImportAsset() 方法。

例子

using UnityEngine;
using UnityEditor;
using UnityEditor.Experimental.AssetImporters;
using System.IO;

/// <summary>
/// 識別並導入後綴是.custom的文件資源,這裏我們的測試資源是個txt文本文件,存儲了一個 Json 格式的 Vector3 數據
/// </summary>
[ScriptedImporter(1, "custom")]
public class CustomAssetType : ScriptedImporter
{
    public override void OnImportAsset(AssetImportContext ctx)
    {
        // 創建立方體
        var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        // 從資源文件讀取位置
        var pos = JsonUtility.FromJson<Vector3>(File.ReadAllText(ctx.assetPath));
        cube.transform.position = pos;
        cube.transform.localScale = Vector3.one;

        // 將立方體綁定到對象上
        ctx.AddObjectToAsset("obj", cube);
        ctx.SetMainObject(cube);

        // 添加材質
        Material mtl = new Material(Shader.Find("Standard"));
        mtl.color = Color.red;
        ctx.AddObjectToAsset("material", mtl);
    }
}

發佈了49 篇原創文章 · 獲贊 2 · 訪問量 2607
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章