[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,如需转载请自行联系原作者

相关文章
|
5天前
|
C# 图形学 C++
使用vscode开发C#+unity没有代码提示问题
使用vscode开发C#+unity没有代码提示问题
9 0
使用vscode开发C#+unity没有代码提示问题
|
2月前
|
存储 移动开发 编解码
基于HTML5开发的Markdown在线编辑器
Markdown是一种轻量级标记语言,以其简洁易读的格式而备受程序员和作者们的青睐。随着互联网的发展,越来越多的在线Markdown编辑器应运而生,为用户提供了更加便捷、高效的写作和编辑环境。本文将探讨基于HTML5开发的Markdown在线编辑器的设计原理、功能特点以及技术优势。
37 1
基于HTML5开发的Markdown在线编辑器
|
5天前
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏4(附项目源码)
5 0
|
5天前
|
图形学
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)
4 0
|
5天前
|
图形学 索引
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏1(附项目源码)
7 0
|
5天前
|
前端开发 JavaScript PHP
【vscode编辑器插件】前端 php unity自用插件分享
【vscode编辑器插件】前端 php unity自用插件分享
6 0
|
26天前
|
存储 缓存 开发工具
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
初识Unity——unity的安装以及工程介绍(安装unity hub、版本选择、中文设置、安装编辑器、Assets文件、Library 文件、[ProjectName].sln 文件)
78 0
|
2月前
|
API 开发工具 C++
【专栏:工具与技巧篇】使用代码编辑器(VS Code/Sublime Text)提升开发效率
【4月更文挑战第30天】在VS Code与Sublime Text两大流行代码编辑器中,开发者可借助其高效特性提升编程效率。VS Code拥有丰富的插件生态、内置Git集成、强大的调试工具、智能提示和多文件导航功能。Sublime Text则以其轻量级、快速响应、多光标编辑及自定义构建系统见长。学习编辑器的键盘快捷键、自定义配置、使用内置终端以及键绑定和宏,将助开发者进一步提高开发效率。选择适合自己的编辑器并不断适应新技术是提升开发工作流的关键。
|
2月前
|
IDE 持续交付 vr&ar
Unity编辑器扩展
Unity编辑器扩展
|
2月前
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】