Unity3D编辑器-编辑器向导ScriptableWizard

        终于熬到了公司项目上线,不知不觉从事u3d开发已经有2年的时间,倍感迷茫,想通过写博客来沉淀一下自己。现在才知道,会做和会说是两件截然不同的事情。对于我来说,写好技术文档比做难多了。

        接下来几篇文章,我会分享一下unity中如何创建编辑器,我认为大家在做项目的时候,首先要给策划或者美术开发足够的编辑器,能极大的节省程序时间,提高开发效率。

要创建简单的界面编辑器,我们需要继承ScriptableWizard类,类中的字段和方法能帮助你快速搭建编辑器窗口:

createButtonName  : 确定按钮的名字(你可以设置为apply,ok等更为贴切的名字),

errorString : 错误提示

helpString : 帮助提示

isValid  : 底下按钮是否可点


OnWizardCreate() : 点击确定按钮调用此事件

OnWizardUpdate() : 当编辑器向导更新时调用


下面以计算时间戳为例,给大家做一个演示:

public class TimestampEditor : ScriptableWizard
{
    public string time = "";
    
    void OnWizardUpdate()
    {
        if (time.Split('-').Length == 6)
        {
            isValid = true;
            errorString = "";
        }
        else
        {
            isValid = false;
            errorString = "日期格式有误";
            helpString = "格式:2015-1-1-8-0-0";
        }

    }

    void OnWizardCreate()
    {
        try
        {
            Debug.Log("时间戳 " + ColorFormat(GetTimestamp(time)));
        }
        catch (Exception)
        {
            Debug.LogError("日期格式有误");
        }

    }

    void OnWizardOtherButton()
    {
        Debug.Log("OnWizardOtherButton");
    }
    
    string ColorFormat(string tex)
    {
        return "" + tex + "";
    }


    private string GetTimestamp(string t)
    {
        string[] tmp = t.Split('-');
        int year = int.Parse(tmp[0]);
        int month = int.Parse(tmp[1]);
        int day = int.Parse(tmp[2]);
        int hour = int.Parse(tmp[3]);
        int minute = int.Parse(tmp[4]);
        int second = int.Parse(tmp[5]);
        DateTime DateNow = new DateTime(year, month, day, hour, minute, second);
        DateTime DateStart = new DateTime(1970, 1, 1, 8, 0, 0);
        return (DateNow - DateStart).TotalSeconds.ToString();
    }

    [MenuItem("Custom/计算时间戳")]
    static void CreateDeSer()
    {
        ScriptableWizard.DisplayWizard("Timestamp", "计算","取消");
    }
}


Unity3D编辑器-编辑器向导ScriptableWizard_第1张图片




你可能感兴趣的:(unity编辑器)