添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

利用unity提供的OnOpenAssetAttribute特性。

unityAPI

描述
用于打开 Unity 中某个资源的回调属性(例如,双击 Project Browser 中的某个资源时会触发回调)。

将此属性添加至某个静态方法后,系统会在 Unity 即将打开资源时调用该方法。该方法应有以下签名之一:
static bool OnOpenAsset(int instanceID, int line)
static bool OnOpenAsset(int instanceID, int line, int column)
如果处理了资源打开操作,则返回 true,如果资源应该由外部工具打开,则返回 false。

// C# example:
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
public class MyAssetHandler
    [OnOpenAssetAttribute(1)]
    public static bool step1(int instanceID, int line)
        string name = EditorUtility.InstanceIDToObject(instanceID).name;
        Debug.Log("Open Asset step: 1 (" + name + ")");
        return false; // we did not handle the open
    // step2 has an attribute with index 2, so will be called after step1
    [OnOpenAssetAttribute(2)]
    public static bool step2(int instanceID, int line)
        Debug.Log("Open Asset step: 2 (" + instanceID + ")");
        return false; // we did not handle the open

OnOpenAssetAttribute 具有提供回调中的顺序索引的选项,从 0 开始。如果您有多个 OnOpenAssetAttribute 回调并想以特定顺序调用它们,此选项将非常有用。系统将从零开始按顺序调用回调。
instanceID是拿到了双击资源的instanceID,line和column好像没什么用。
注意这个是监听全局的,没有办法特定对某个类型的asset的双击。
所以要在检测到时,拿instanceID验证下是不是对应的Asset,不是的话返回false,以免屏蔽了对其它资源的双击回调。

Unity 使用 Play Asset Delivery 插件 com.google.play.assetdelivery-1.7.0.unitypackage unity 打包aab所使用的插件 可是使用它,解决谷哥安装包150m限制 AssetStudio 查看unity资源,支持以下资源解压 Texture2D : convert to png, tga, jpeg, bmp Sprite : crop Texture2D to png, tga, jpeg, bmp AudioClip : mp3, ogg, wav, m4a, fsb. support convert FSB file to WAV(PCM) Font : ttf, otf Mesh : obj TextAsset Shader MovieTexture VideoClip MonoBehaviour : json Animator : export to FBX file with bound AnimationClip instanceID是资源的唯一标识符,lineNumber是资源文件中的行号。在Unity中,OnOpenAsset是一个非常有用的回调函数,它可以在用户双击资源文件时自动打开一个编辑器窗口。在这个例子中,我们判断资源类型是否为txt文件,如果是则打开文本编辑器。在这个例子中,我们判断资源类型是否为png或jpg纹理文件,如果是则打开纹理文件。在这个例子中,我们判断资源类型是否为unity景文件,如果是则打开场景文件。在这个例子中,我们判断资源类型是否为cs脚本文件,如果是则打开脚本文件。 在GUI.Toggle(pos, value, label, "button")最后的GUIStyle设置为button就可以变成toggle形式的button了 EditorGUI.BeginChangeCheck()和EditorGUI.EndChangeCheck()可以用来检测control控件是否修改 EditorGUI.DelayedDoubleField()和EditorGUI.DoubleField()的区别在于前者只有当鼠标移出输入框的时候才会返回值 EditorGUILayo Unity的Console窗口双击重新定向脚本。 项目里有时候会自己重新封装unity的Debug类,做Log信息的输出权限管理for写入本地Log文件,着色之类的。 那么会带来双击定位到自己的脚本,而不是具体的业务脚本。 所以就分享一篇定向脚本,附带一些注释。 引用了别人的一篇定位脚本,做了修改。。。引用了谁的已经不记得了。Sorry。 * By: Fox.Huang 黄文叶, Date... 举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在Unity的Editor上进行赋值。 在Class上使用[RequireComponent]属性,就会在Class的GameObject上自动追加所需的Component。 以下是Unity官网文档中找到的所有Attribute,下面将按照顺序,逐个对这些Attribute进行说明和小的测试。 部分例子使用了Unity官方的示例。 UnityEngine AddComponentMenu 可以在Unity   在Inspector面板上给定义的字段的上一行加段描述,可以将属性隔离开,形成分组的感觉 [Tooltip(“XXX”)]   给一个变量添加这个属性后,在Inspector面板将鼠标悬停在该变量上可以显示提示 [Range(min, max)]`   限制数值变量的取值范围并以滑动条显示在Inspector中 [Min(min)]   限制一个 float,int 类型的变量的最小值 Unity3D自定义资源文件编辑工具插件。在Unity3D编辑器中,双击或者右键打开一些资源文件时,我们希望使用自定义的工具来打开/编辑这些文件,例如:使用文本编辑器打开.txt文件,使用Sublime Text 打开.shader文件等。