关卡编辑器

关卡编辑器插件开发日记

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<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

[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

[cb]Unity 关卡编辑器 开发的更多相关文章

  1. 【Unity】1.0 第1章 Unity—3D游戏开发和虚拟现实应用开发的首选

    分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 Unity是跨平台2D.3D游戏和虚拟现实高级应用程序的专业开发引擎,是由Unity Technologies公司研制的 ...

  2. Unity 3D游戏开发引擎:最火的插件推荐

    摘要:为了帮助使用Unity引擎的开发人员制作更完美的游戏.我们精心挑选了十款相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJ ...

  3. Cocos2d-x3.0游戏实例之《别救我》第八篇——TiledMap实现关卡编辑器

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/musicvs/article/details/25368273 好吧.我真心全然搞不懂.我如今仅仅只 ...

  4. 转:Oculus Unity Development Guide开发指南(2015-7-21更新)

    http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=34175 Oculus Unity Development Guide ...

  5. 【v2.x OGE教程 12】 关卡编辑器帮助文档

    ] 关卡编辑器帮助文档 一.简单介绍 关卡编辑器用于游戏关卡界面元素的可视化编辑,包含元素的位置.尺寸以及其他自己定义属性.通过解析生成的数据文件就可以获取关卡信息,并能随时调整.以降低开发工作量,提 ...

  6. Unity iOS混合开发界面切换思路

    Unity iOS混合开发界面切换思路 最近有很多博友QQ 私信 或则 留言联系我,请教iOS和Unity界面之前相互切换的问题,源代码就不私下发你们了,界面跳转功能的代码我直接贴到下面好了,顺带说i ...

  7. 10个免费的PHP编辑器/开发工具

    转自: http://www.iteye.com/news/22672 一个好的编辑器或开发工具,能够极大提高我们的开发效率.下面介绍10个免费.强大的PHP编辑器/开发工具.这些编辑器拥有调试器.增 ...

  8. Unity 3D 建立开发环境

    之后的基本方向 ios游戏开发,基础教程http://www.devdiv.com/unity_d_-thread-128068-1-1.html,学习Unity 3D游戏开发. 应该昨天表示,读了一 ...

  9. Unity 3D游戏开发学习路线(方法篇)

    Unity 3D本来是由德国的一些苹果粉丝开发的一款游戏引擎,一直只能用于Mac平台,所以一直不被业外人士所知晓.但是后来也推出了2.5版,同时发布了PC版本,并将其发布方向拓展到手持移动设备.Uni ...

随机推荐

  1. Django--视图函数views

    1 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...

  2. 第一次用python 写的简单爬虫 记录在自己的博客

    #python.py from bs4 import BeautifulSoup import urllib.request from MySqlite import MySqlite global ...

  3. git在工作中的用法总结-环境安装篇

    使用git有很长一段时间了 ,平时用到的时候都是直接google,经常用到的一些也记录在笔记中,但有时候笔记太多,实在是太乱了(其实是我太懒~ 哈?),找都要半天的时候还不如直接google,今天有空 ...

  4. c# txt代码转换成HTML格式

    /// <summary> /// 字符串字符处理 /// </summary> /// <param name="chr">等待处理的字符串& ...

  5. WebApi接口传参

    目前接口统一使用 [FromBody]Dictionary<string,string> req 来接收. 有时候,需要把从req字典提取多个字段赋值给 model,几个还好,几十个赋值就 ...

  6. LeetCode两数之和-Python<一>

    下一篇:LeetCode链表相加-Python<二> 题目:https://leetcode-cn.com/problems/two-sum/description/ 给定一个整数数组和一 ...

  7. Jquery Ajax 调用后台并返回数据

    一.前台调用ajax并解析json对象. $.ajax({ url : '', type : 'POST', //GET data : '’, beforeSend : function(reques ...

  8. log4j.appender.file.DatePattern

    DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件. 我们可以按下面的方式配置DailyRollingFileApp ...

  9. vue组件+axios访问本地json

    import axios from 'axios'export default { name: "AjaxText", data: function () { return { m ...

  10. 【Java并发编程】11、volatile的使用及其原理

    一.volatile的作用 在<Java并发编程:核心理论>一文中,我们已经提到过可见性.有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果 ...