创建一个脚本 :ScriptableWizard
定义修改项 public int ...
public int...
创建一个菜单按钮
[menuitem()]
static void createWizard(){ scriptableWizard.DisplayWizard<调用类名> }
创建一个脚本 :ScriptableWizard
定义修改项 public int ...
public int...
创建一个菜单按钮
[menuitem()]
static void createWizard(){ scriptableWizard.DisplayWizard<调用类名> }
[contestmeun("id,setcolcor")]
void setcolor(){ }
[menuItem (,true,)]
static bool Validate(){}
%ctrl
#=
&
undo 撤销
//创建自定义窗口
引用命名空间using Editor,脚本继承EditorWindow
[MenuItem(Window/show mywindow)]
static void ShowMywindow()
{
Mywindow window = EditorWindow.GetWindow<Mywindow>();
window.Show(); //让窗口弹出来
}
void OnGUI() //给窗口添加内容用OnGUI方法
{
}
//显示进度条
脚本名:ScriptableWizard
{
[MenuItem(Tools/CreateWizard)]
staic void CreateWizard()
{
ScriptableWizard.DisplayWizard<脚本名>("对话框标题名")
}
public int speed = 5;
public int num = 6;
void OnWizardCreate() //检测Create按钮的点击
{
GameObject[]enemyProfabs = Selection.gameObjecs;
EditorUtility.DisplayProgressBar("进度","0/"+enemyProfabs.Length+"完成修改值",0);(新加代码)
int count = 0; //计数器(新加代码)
foreach(GameObject go in enemyProfabs )
{
脚本名(要更改属性的脚本) 变量名 = go.Getcompoment<脚本名>();
变量名.speed+=speed;
变量名.num +=num ;
count++; (新加代码)
EditorUtility.DisplayProgressBar("进度",count+"/"+enemyProfabs.Length+"完成修改值",(float)count/enemyProfabs.Length);(新加代码)
}
enemyProfabs.ClearProgressBar(); //进度条加载完成关闭(新加代码)
}
}
//EditorUtility.DisplayProgressBar第一个参数为进度条名称,第二个参数为加载个数,0代表从0开始加载,最大为1
//可以结合13课与14课合并笔记学习
//保存更改的数据
const string changeStartHealthValueKey = "*******";
const string changeSinkSpeedValueKey = "****";
void OnEnable() //当窗口被创建出来的时候调用
{
a = EditorPrefa.GetInt(changeStartHealthValueKey,a);
b = EditorPrefa.GetInt(changeSinkSpeedValueKey,b)
}
EditorPrefs.SetInt(changeStartHealthValueKey,a);
EditorPrefs.SetInt(changeSinkSpeedValueKey,b);
//a,b为要更改的字段变量,a,b变量相当于13课与14课笔记中的int变量
//请结合13课和14课合并的笔记学习
//提示信息
ShowNotification(new GUIContent("提示信息"));
ScriptableWizard.DisplayWizard<脚本名>("对话框标题名","Change Value","Change")
void OnWizardOtherButton()
{
}
//Change一直改变字段值,不关闭对话框,Change Value改变一次字段值,关闭对话框,Change实现其逻辑功能一定要有OnWizardOtherButton方法。
//具体详细代码看12课与13课合并笔记
//当前字段被修改的时候调用
void OnwizardUpdate()
{
}
//当选择物体改变的时候被调用
void OnSelectionChange()
{
}
//errorString = "",错误提示信息。
//撤销操作
Undo.RecordObject(hp,"*****");
//撤销操作方法需要在属性改变之前调用
/*
本笔记13课与14课合并
**/
//弹出对话框
脚本名:ScriptableWizard
{
[MenuItem(Tools/CreateWizard)]
staic void CreateWizard()
{
ScriptableWizard.DisplayWizard<脚本名>("对话框标题名","Change Value")
}
public int 变量名 = ***;
public int 变量名 = ***;
}
///需要加上using unityEditor指令,DisplayWizard(显示对话框),Change Value按钮名称,默认为Create
//改变拥有共同属性的物体的属性
脚本名:ScriptableWizard
{
[MenuItem(Tools/CreateWizard)]
staic void CreateWizard()
{
ScriptableWizard.DisplayWizard<脚本名>("对话框标题名")
}
public int speed = 5;
public int num = 6;
void OnWizardCreate() //检测Create按钮的点击
{
GameObject[]enemyProfabs = Selection.gameObjecs;
foreach(GameObject go in enemyProfabs )
{
脚本名(要更改属性的脚本) 变量名 = go.Getcompoment<脚本名>();
变量名.speed+=speed;
变量名.num +=num ;
}
}
}
///需要加上using unityEditor指令;DisplayWizard(显示对话框);点击必须调用OnWizardCreate方法
//ContextMenu只能改变某个脚本右键菜单选项,MenuItem为通用
[ContextMenu("SetColor")]
void SetColor()
{
/////
}
//ContextMenuItem给脚本某个属性添加方法(鼠标右击)
[ContextMenuItem("Add Hp","AddHp")]
void AddHp()
{
/////
}
/*
1、ContextMenu和ContextMenuItem不需要using UnityEditor的指令
2、ContextMenuItem第一个参数
**/
//false参数控制菜单是否可以启用
[MenuItem("GameObject/delete",false,11)]
static void Mydelete()
{
foreach(Object o in Selection.objects)
{
Undo.DestroyObjectImmediate(o);
}
}
1、给菜单加快捷键
//单个快捷键用法,在路径后面必须要有空格,组合键也一样,然后_+快捷键
①[MenuItem("Tools/delete _t"),false,10]
//组合键,%代表ctrl,#代表shift,&代表alt
②[MenuItem("Tools/delete %a"),false,10]
//有撤销的删除操作,Ctrl+Z撤销
1、删除Hierarchy面板上组件。
[MenuItem("GameObject/delete",false,11)]
static void Mydelete()
{
foreach(Object o in Selection.objects)
{
Undo.DestroyObjectImmediate(o);
}
}
//这种删除不会有撤销操作,因为没有注册
1、删除Hierarchy面板上组件。
[MenuItem("GameObject/delete",false,11)]
static void Mydelete()
{
foreach(Object o in Selection.objects)
{
GameObjects.DestroyImmediate(o);
}
}
①先添加要操作的功能:[MenuItem("CONTEXT/组件名/按钮名")]
1、static void InitHealthAndSpeed(MenuCommand cmd) //MenuItem是当前正在操作的组件。
{
②获取要操作的组建:MenuCommand cmd
③组建名 变量名 = cmd.context as 组件名
④变量名.属性 (需要更改的属性) = *****
}
1、给某个脚本右键菜单栏中添加功能[MenuItem("CONTEXT/组件名/按钮名")]。