[Unity] 资源工作流程 - ScriptedImporter
一、参考资料#
二、说明#
资源工作流程可分为:导入、创建、构建、分发、加载,五个步骤。Scripted Importer 属于“导入”部分的内容。
Unity 本身提供了大量的内置导入器,比如在添加图片文件到 Assets 目录时,会交由 TextureImporter 进行处理,Unity 弹出 Importing.. 提示,进行图片压缩等工作,生成 Library 缓存...
内置的导入器相当复杂,大部分的核心代码也是引擎不开源的 C/C++ 部分。而 Unity 提供了另一种可自定义的导入器:Scripted Importer,使用 C# 为 Unity 本身不支持的文件格式编写自定义资源导入器。
Scripted Importer 无法处理已由 Unity 本身处理的文件扩展名
三、ScriptedImporter#
Unity 本身不识别 .lua 后缀的文件,如果直接移入 Asset 目录,则会由 DefaultImporter 赋予最基本的属性(旧版本也可能直接忽略不识别的文件)
所以 Lua 文件通常会加上 .txt 或者 .bytes 后缀,交由内置的 TextScriptImporter 进行导入。
或者也可以自行添加处理 .lua 后缀格式的导入器:
using UnityEngine;
using UnityEditor.AssetImporters;
using System.IO;
[ScriptedImporter(1, ".lua")]
public class LuaImporter : ScriptedImporter
{
public string luaPath;
public override void OnImportAsset(AssetImportContext ctx)
{
//Debug.Log("OnImportAsset");
luaPath = ctx.assetPath;
string luaTxt = File.ReadAllText(ctx.assetPath);
var assetText = new TextAsset(luaTxt);
ctx.AddObjectToAsset("main obj", assetText);
ctx.SetMainObject(assetText);
}
}
三、ScriptedImporterEditor#
单击资源可在 Inspector 窗口中查看其设置,通过创建继承自 ScriptedImporterEditor 的类,可在对应 Importer 的资源编辑器面板中显示自定义内容:
using UnityEditor;
using UnityEditor.AssetImporters;
[CustomEditor(typeof(LuaImporter))]
public class LuaImporterEditor : ScriptedImporterEditor
{
public override void OnInspectorGUI()
{
LuaImporter importer = target as LuaImporter;
if (importer)
{
EditorGUILayout.LabelField(importer.luaPath);
EditorGUILayout.LabelField(importer.GetInstanceID()+"");
}
ApplyRevertGUI(); //默认的 Revert/Apply 显示
}
}
作者:wildmelon
出处:https://www.cnblogs.com/wildmelon/p/16087056.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)」许可协议进行许可。
作品中所包含的外部插件源代码、图片、资源和链接库等,如希望在其他场景使用,请务必确认符合其本身授权规范。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)