【Unity】 HTFramework框架(三十四)框架实用特性

更新日期:2020年4月20日。
Github源码:[点我获取源码]

框架实用特性

框架里包含一些运行时或编辑器内使用的特性,他们对于初次使用者来说很可能是未知的,所以在这里进行统一的罗列。

LnkTools特性(快捷工具)

LnkTools特性(快捷工具)只能标记于静态方法,且只能用于编辑器内,他可以将你的静态方法注册到快捷工具栏,以便于一键完成你的自定义操作。

如下,我们新建一个编辑器脚本TestLnkTools
在这里插入图片描述
在其中键入代码:

public class TestLnkTools
{
    [LnkTools("我的工具")]
    private static void Test()
    {
        GlobalTools.LogInfo("呼叫我的工具!");
    }
}

然后回到编辑器,编译完成后,工具栏中便出现了我们自定义的工具:
在这里插入图片描述
点击【我的工具】:
在这里插入图片描述

CSDNBlogURL特性(链接CSDN博客)

CSDNBlogURL特性(链接CSDN博客)只能标记于类,且目标类必须是继承至HTFEditor的编辑器类,他用于修饰一个对象在Inspector面板的显示界面,CSDNBlogURL特性可以快速链接至一个CSDN博客url,以便于用户在使用你的代码出现疑问时,可以快速定位到你的帮助文档。

如下,我们为已有类型Test新建一个Inspector修饰类TestInspector
在这里插入图片描述
在其中键入代码:

[CSDNBlogURL("你的CSDN博客地址")]
[CustomEditor(typeof(Test))]
public class TestInspector : HTFEditor<Test>
{
    protected override bool IsEnableBaseInspectorGUI => true;

    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();
    }
}

然后回到编辑器,查看Test组件的Inspector面板:
在这里插入图片描述
Test组件的Inspector面板很明显有了一个CSDN图标,点击他就能打开浏览器并链接至你的博客地址。

GithubURL特性(链接Github仓库)

GithubURL特性(链接Github仓库)只能标记于类,且目标类必须是继承至HTFEditor的编辑器类,他用于修饰一个对象在Inspector面板的显示界面,GithubURL特性可以快速链接至一个Github仓库url,以便于用户在使用你的代码时,可以快速定位到你的代码的源码管理仓库。

如下,我们在已有类型TestInspector中键入新的代码:

[CSDNBlogURL("你的CSDN博客地址")]
[GithubURL("你的Github仓库地址")]
[CustomEditor(typeof(Test))]
public class TestInspector : HTFEditor<Test>
{
    protected override bool IsEnableBaseInspectorGUI => true;

    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();
    }
}

然后回到编辑器,查看Test组件的Inspector面板:
在这里插入图片描述
Test组件的Inspector面板很明显有了一个Github图标,点击他就能打开浏览器并链接至你的源码仓库地址。

CustomTool特性(自定义工具)

CustomTool特性(自定义工具)只能标记于静态方法,且只能用于编辑器内,他可以将你的静态方法注册到CustomTool菜单(HTFramework -> Tools -> CustomTool),以便于一键完成你的自定义操作。

如下,我们在已有类型TestInspector中键入新的代码:

[CSDNBlogURL("你的CSDN博客地址")]
[GithubURL("你的Github仓库地址")]
[CustomEditor(typeof(Test))]
public class TestInspector : HTFEditor<Test>
{
    protected override bool IsEnableBaseInspectorGUI => true;

    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();
    }

    [CustomTool]
    private static void TestCustomTool()
    {
        GlobalTools.LogInfo("自定义菜单操作!");
    }
}

我们回到编辑器,编译完成后,依次点击菜单:HTFramework -> Tools -> CustomTool。
在这里插入图片描述
CustomTool可以修饰多个静态方法,他们都将在呼叫CustomTool菜单时被执行,很显然的,我们可以用他来在项目Build前执行一系列操作,而这一系列操作只需要我们点击CustomTool这一个菜单。

Remark特性(文字备注)

Remark特性(文字备注)可用于任意类型,标记之后,在代码中可以很方便的获取这个成员的文字备注信息。

比如,标记枚举:

    protected override void OnInspectorDefaultGUI()
    {
        base.OnInspectorDefaultGUI();

        TestEnum testEnum = TestEnum.House;
        GlobalTools.LogInfo(testEnum.GetRemark()); //打印:房屋
    }

    public enum TestEnum
    {
        [Remark("房屋")]
        House,
        [Remark("公路")]
        Highway
    }

RunTimeAssembly特性(运行时程序集)

RunTimeAssembly特性(运行时程序集)只能标记于String类型的静态字段,且只能用于运行时,他可以将该字段值代表的程序集加入到框架的运行时程序域,以便于框架能够正确识别该程序集。

比如,你有一个自定义程序集MyAssembly,这样做将其加入到框架的运行时程序域:

    [RunTimeAssembly]
    private static string test = "MyAssembly";

Builder框架构建器

Builder框架构建器为在Unity默认构建器上进一步封装的专用构建器,他秉承了框架的特性:只有包含框架主体的入口场景才能被允许构建,其他场景将只能以资源形式打入AB包。

Builder构建前置条件

Builder构建时允许设置前置条件,只有前置条件全部满足,才允许构建项目,这适用于一些构建操作频繁的项目,以防止错误构建,或未完成构建前初始化便企图构建。

任意编辑器脚本中键入如下代码:

    [InitializeOnLoadMethod]
    private static void CheckBuild()
    {
    	//CheckBuildPreconditions 为项目构建前置条件集合,任意一个条件返回false,都将禁止构建
        Builder.CheckBuildPreconditions.Add(Check);
    }

    private static bool Check()
    {
        //如果已封版本,则允许构建
        return Version.blocked;
    }

打开构建器,如果条件检测未通过,将无法构建,以避免错误的构建浪费大量时间:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq992817263/article/details/105637879
今日推荐