[cb]Unity Editor Toolbar 编辑器扩展
2014-06-27 17:09
701 查看
1、ApplytoPrefab[把改动应用到Prefab]
2、CurrentSceneViewCenterPosition:获取Scene中间坐标
3、SceneContextMenu[场景视图右键菜单]
可以参考NGUI的UIWidgetContainerEditor.NGUIEditorTools.ShowSpriteSelectionMenu(e.mousePosition);我这儿实现的,还没有做处理
4、InspectorContextMenu
参见:http://docs.unity3d.com/ScriptReference/MenuCommand-context.html
http://answers.unity3d.com/questions/22947/adding-to-the-context-menu-of-the-hierarchy-tab.html
TheCONTEXT/{string}seemstoworkforcomponentswithintheInspector
同时可查看NGUI\Editor\NGUIContextMenu.cs
AssetStore工具推荐:https://www.assetstore.unity3d.com/en/#!/content/10424
if(GUILayout.Button("ApplyColliderToPrefab")) { PrefabUtility.ReplacePrefab(simActor.Preview,PrefabUtility.GetPrefabParent(simActor.Preview),ReplacePrefabOptions.ConnectToPrefab); }
2、CurrentSceneViewCenterPosition:获取Scene中间坐标
比如每次NewActor时,都出现在Scene视图的中间
SceneView.onSceneGUIDelegate-=OnCustomSceneGUI;
voidOnCustomSceneGUI(SceneViewsceneview)
{
SceneViewPos=sceneview.pivot;
}
//创建Actor
publicvoidCreateMapActor()
{
GameObjectgameLogic=GameObject.Find("MapLogic");
GameObjectnewActor=GameObject.CreatePrimitive(PrimitiveType.Sphere);
newActor.name="Actor-"+UnityEngine.Random.Range(1,999999);
CBaseTool.SetChild(newActor.transform,gameLogic.transform);
Selection.activeGameObject=newActor;
CSimActorsimActor=newActor.AddComponent<CSimActor>();
newActor.transform.position=SceneViewPos;
}
3、SceneContextMenu[场景视图右键菜单]
可以参考NGUI的UIWidgetContainerEditor.NGUIEditorTools.ShowSpriteSelectionMenu(e.mousePosition);我这儿实现的,还没有做处理
usingUnityEngine;
usingUnityEditor;
[InitializeOnLoad]
[ExecuteInEditMode]
publicclassMySceneContext:MonoBehaviour
{
voidUpdate()
{
SceneView.onSceneGUIDelegate=SceneContext;
}
voidSceneContext(SceneViewsceneview)
{
if(Selection.activeTransform==null)return;
TransformselectTrans=Selection.activeTransform;
Vector3curPos=selectTrans.position;
Eventevt=Event.current;
if(evt.type==EventType.ContextClick)
{
GenericMenumenu=newGenericMenu();
menu.AddItem(newGUIContent("MenuItem1"),false,CallBack,"item1");
menu.AddItem(newGUIContent("MenuItem2"),false,CallBack,"item2");
menu.ShowAsContext();
evt.Use();
}
}
voidCallBack(objectuserData)
{
}
}
4、InspectorContextMenu
[MenuItem("CONTEXT/Transform/MyContext1")]
publicstaticvoidMyContext(MenuCommandcommand)
{
CBase.Log("contextmenu");
}
参见:
TheCONTEXT/{string}seemstoworkforcomponentswithintheInspector
同时可查看NGUI\Editor\NGUIContextMenu.cs
AssetStore工具推荐:
相关文章推荐
- Unity Editor Toolbar 编辑器扩展
- Unity Editor 编辑器扩展 六 EditorWindow
- Unity Editor 编辑器扩展 十五 提取NGUI 的Transform ResetPosition 功能
- Unity Editor 编辑器扩展 十 Handle控件
- Unity Editor 编辑器扩展 十一 Inspector可排序列表
- Unity Editor 编辑器扩展 五 EditorGUI
- Unity Editor 编辑器扩展 十三 自定义创建资源
- Unity扩展编辑器--类型1:Editor Windows
- 【Unity编辑器】EditorWindow扩展-SubWindow
- UnityEditor扩展 - 编辑器中的内置属性Attribute
- UnityEditor扩展编辑器实现从场景中渲染得到Cubemap
- Unity Editor 编辑器扩展 七 创建脚本模版
- Unity Editor 编辑器扩展三 Unity Editor 数据持久化及Editor窗口的初识
- Unity Editor 编辑器扩展 八 Undo
- Unity编辑器扩展之EditorWindow
- unity编辑器扩展篇-中文字段显示
- UE4编辑器ToolBar扩展
- unity编辑器扩展篇-快速设置sprite
- Unity Editor扩展入门(3) 数据的保存
- unity 简单编辑器的扩展应用—1