终于熬到了公司项目上线,不知不觉从事u3d开发已经有2年的时间,倍感迷茫,想经过写博客来沉淀一下本身。如今才知道,会作和会说是两件大相径庭的事情。对于我来讲,写好技术文档比作难多了。app
接下来几篇文章,我会分享一下unity中如何建立编辑器,我认为你们在作项目的时候,首先要给策划或者美术开发足够的编辑器,能极大的节省程序时间,提升开发效率。编辑器
要建立简单的界面编辑器,咱们须要继承ScriptableWizard类,类中的字段和方法能帮助你快速搭建编辑器窗口:3d
createButtonName : 肯定按钮的名字(你能够设置为apply,ok等更为贴切的名字),code
errorString : 错误提示orm
helpString : 帮助提示blog
isValid : 底下按钮是否可点继承
OnWizardCreate() : 点击肯定按钮调用此事件事件
OnWizardUpdate() : 当编辑器向导更新时调用ip
下面以计算时间戳为例,给你们作一个演示:
开发
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 "<color='#FFD700'>" + tex + "</color>"; } 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<TimestampEditor>("Timestamp", "计算","取消"); } }