开发者社区> 史迪奇abc> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

[cb]Unity 关卡编辑器 开发

简介:
+关注继续查看



关卡编辑器

关卡编辑器插件开发日记

1. Apply to Prefab [替换Prefab]

image

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<CSimActor>();

        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

image

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

文献资料

http://docs.unity3d.com/ScriptReference/MenuCommand-context.html

http://answers.unity3d.com/questions/22947/adding-to-the-context-menu-of-the-hierarchy-tab.html

 

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

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

可选插件

Asset Store工具推荐:https://www.assetstore.unity3d.com/en/#!/content/10424


本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3812368.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Unity面试题——Unity编辑器基础
Unity面试题——Unity编辑器基础
0 0
【琐琐碎碎小知识】 关于部分Unity编辑器在创建瓦片地图时缺乏Tiles选项
【琐琐碎碎小知识】 关于部分Unity编辑器在创建瓦片地图时缺乏Tiles选项
0 0
Unity 编辑器开发实战【Custom Editor】- FSM Editor
Unity 编辑器开发实战【Custom Editor】- FSM Editor
0 0
Unity 编辑器开发实战【AssetDatabase】- 获取资产的依赖项、引用项
Unity 编辑器开发实战【AssetDatabase】- 获取资产的依赖项、引用项
0 0
Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器
Unity 编辑器开发实战【Custom Editor】- AudioDatabase Editor 音频库编辑器
0 0
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
Unity 编辑器开发实战【Custom Editor】- 为UI视图制作动画编辑器
0 0
Unity 编辑器开发实战【Editor Window】- Filter 物体筛选工具
Unity 编辑器开发实战【Editor Window】- Filter 物体筛选工具
0 0
Unity 编辑器开发实战【Editor Window】- 构建公司内部的PackageManager
Unity 编辑器开发实战【Editor Window】- 构建公司内部的PackageManager
0 0
Unity开发者必备的编辑器技巧
我是一名Unity开发爱好者,自己总结了一些Unity编辑器技巧
0 0
看别人在Unity的编辑器上添加菜单那么帅,我也要给Unity添加菜单
今天分享,如何添加自定义菜单栏,效果如下图所示。 第一种,在Component组件菜单下面: 第二种,添加到编辑器的菜单栏下:
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
UI2CODE智能生成flutter代码--整体架构 【上叶】
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载