Unity OnOpenAsset
在Unity中,OnOpenAsset是一个十分有用的回调函数,它能够在用户双击资源文件时主动关上一个编辑器窗口。这个回调函数能够用于自定义资源编辑,进步工作效率。本文将介绍OnOpenAsset的应用办法,并提供三个应用例子。
OnOpenAsset的应用办法
OnAsset是Unity Editor的一个回调函数,它会在用户双击资源文件时被调用。这个回调函数有两个参数:instanceID和lineNumber。instanceID是资源的惟一标识符,lineNumber是资源文件中的行号。咱们能够利用这两个参数来关上资源编辑器。
要应用OnOpenAsset,咱们须要在Editor文件夹下创立一个脚本,并在脚本中实现OnOpenAsset办法。上面是一个简略的例子:
using UnityEditor;
using UnityEngine;
public class MyEditor : Editor
{
[UnityEditor.Callbacks.OnOpenAsset]
public static bool OnOpenAsset(int instanceID, int lineNumber)
{
// 获取资源门路
string assetPath = AssetDatabase.GetAssetPath(instanceID);
// 判断资源类型
if (assetPath.EndsWith(".txt"))
{
// 关上文本编辑器
TextAsset asset = AssetDatabase.LoadAssetAtPath<TextAsset>(assetPath);
UnityEditorInternal.InternalEditorUtility.OpenFileAtLineExternal(assetPath, lineNumber);
return true;
}
// 返回false示意不解决该资源
return false;
}
}
在这个例子中,咱们判断资源类型是否为txt文件,如果是则关上文本编辑器。咱们能够依据须要自定义资源编辑器。
应用例
案例1:关上场景文件
using UnityEditor;
using UnityEngine;
public class SceneOpener : Editor
{
[UnityEditor.Callbacks.OnOpenAsset]
public static bool OnOpenAsset(int instanceID, int lineNumber)
{
// 获取资源门路
string assetPath = AssetDatabase.GetAssetPath(instanceID);
// 判断资源类型
if (assetPath.EndsWith(".unity"))
{
// 关上场景文件
EditorSceneManager.OpenScene(assetPath);
return true;
}
// 返回false示意不解决该资源
return false;
}
}
在这个例子中,咱们判断资源类型是否为unity景文件,如果是则关上场景文件。
案例2:关上脚本文件
using UnityEditor;
using UnityEngine;
public class ScriptOpener : Editor
{
[UnityEditor.Callbacks.OnOpenAsset]
public static bool OnOpenAsset(int instanceID, int lineNumber)
{
// 获取资源门路
string assetPath = AssetDatabase.GetAssetPath(instanceID);
// 判断资源类型
if (assetPath.EndsWith(".cs"))
{
// 关上脚本文件
MonoScript script = AssetDatabase.LoadAssetAtPath<MonoScript>(assetPath);
AssetDatabase.OpenAsset(script);
return true;
}
// 返回false示意不解决该资源
return false;
}
}
在这个例子中,咱们判断资源类型是否为cs脚本文件,如果是则关上脚本文件。
案例3:关上纹理文件
using UnityEditor;
using UnityEngine;
public class TextureOpener : Editor
{
[UnityEditor.Callbacks.OnOpenAsset]
public static bool OnOpenAsset(int instanceID, int lineNumber)
{
// 获取资源门路
string assetPath = AssetDatabase.GetAssetPath(instanceID);
// 判断资源类型
if (assetPath.EndsWith(".png") || assetPath.EndsWith(".jpg"))
{
// 关上纹理文件
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);
AssetDatabase.OpenAsset(texture);
return true;
}
// 返回false示意不解决该资源
return false;
}
}
在这个例子中,咱们判断资源类型是否为png或jpg纹理文件,如果是则关上纹理文件。
结
OnOpenAsset是Unity Editor的一个十分有用的回调函数,它能够用于自定义资源编辑器,进步工作效率。咱们能够依据须要自定义资源编辑器,并在OnOpenAsset办法中实现关上资源的逻辑。
本文由博客一文多发平台 OpenWrite 公布!
发表回复