博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[cb]Unity 关卡编辑器 开发
阅读量:5966 次
发布时间:2019-06-19

本文共 2213 字,大约阅读时间需要 7 分钟。

关卡编辑器

关卡编辑器插件开发日记

1. Apply to Prefab [替换Prefab]

if (GUILayout.Button("Apply Collider To Prefab"))            {                PrefabUtility.ReplacePrefab(simActor.Preview, PrefabUtility.GetPrefabParent(simActor.Preview), ReplacePrefabOptions.ConnectToPrefab);            }

 

2. 获取Scene的中间坐标

比如每次 New Actor时,都出现在Scene视图的中间

SceneView.onSceneGUIDelegate -= OnCustomSceneGUI;    void OnCustomSceneGUI(SceneView sceneview)    {        SceneViewPos = sceneview.pivot;    }
//创建Actor    public void CreateMapActor()
{        GameObject gameLogic = GameObject.Find("MapLogic");        GameObject newActor = GameObject.CreatePrimitive(PrimitiveType.Sphere);        newActor.name = "Actor-" + UnityEngine.Random.Range(1, 999999);        CBaseTool.SetChild(newActor.transform, gameLogic.transform);        Selection.activeGameObject = newActor;        CSimActor simActor = newActor.AddComponent
(); newActor.transform.position = SceneViewPos; }

 

3. Scene Context Menu[场景视图添加右键菜单]

可以参考NGUI的 UIWidgetContainerEditor. NGUIEditorTools.ShowSpriteSelectionMenu(e.mousePosition); 我这儿实现的,还没有做处理

using UnityEngine;using UnityEditor;[InitializeOnLoad][ExecuteInEditMode]public class MySceneContext : MonoBehaviour{    void Update()    {        SceneView.onSceneGUIDelegate = SceneContext;    }    void SceneContext(SceneView sceneview)    {        if (Selection.activeTransform == null) return;        Transform selectTrans = Selection.activeTransform;        Vector3 curPos = selectTrans.position;        Event evt = Event.current;        if (evt.type == EventType.ContextClick)        {            GenericMenu menu = new GenericMenu();            menu.AddItem(new GUIContent("MenuItem1"), false, CallBack, "item 1");            menu.AddItem(new GUIContent("MenuItem2"), false, CallBack, "item 2");            menu.ShowAsContext();            evt.Use();        }    }    void CallBack(object userData)    {    }}

4. Inspector Context Menu

[MenuItem("CONTEXT/Transform/MyContext1")]    public static void MyContext(MenuCommand command)    {        CBase.Log("context menu");    }

文献资料

 

The CONTEXT/{string} seems to work for components within the Inspector

同时可查看 NGUI\Editor\NGUIContextMenu.cs

可选插件

Asset Store工具推荐:

转载地址:http://etvax.baihongyu.com/

你可能感兴趣的文章
阿里云 Debian Linux 布署记录
查看>>
了解JavaScript 数组对象及其方法
查看>>
设置Tomcat的UTF-8编码
查看>>
Java基础5:抽象类和接口
查看>>
方法 属性 构造方法和包
查看>>
2.db2数据库基础篇2
查看>>
BZOJ-2140: 稳定婚姻 (tarjan强连通分量)
查看>>
BZOJ-1433: [ZJOI2009]假期的宿舍 (网络流最大流经典问题)
查看>>
Linux平台Cpu使用率的计算
查看>>
Ackermann Steering System
查看>>
MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)
查看>>
C#中静态和非静态的区别
查看>>
SQL SERVER 修改数据库名称(包括 db.mdf 名称的修改)
查看>>
详解定位与定位应用
查看>>
fiddler(二)、配置抓取https协议
查看>>
在Vue中Router详细引用
查看>>
cocos2dx 实现文字的一键复制功能(IOS、Android)
查看>>
sqlserver 2012中实现字符串连接的新方法
查看>>
【419】C语言语句
查看>>
python 网络编程第一版
查看>>