[cb]Unity 关卡编辑器 开发
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhaoqingqing/p/3812368.html
关卡编辑器#
关卡编辑器插件开发日记
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
作者:赵青青 一名在【网易游戏】做游戏开发的程序员,擅长Unity3D,游戏开发,.NET等领域。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
本文版权归作者和博客园共有,欢迎转载,转载之后请务必在文章明显位置标出原文链接和作者,谢谢。
如果本文对您有帮助,请点击【推荐】您的赞赏将鼓励我继续创作!想跟我一起进步么?那就【关注】我吧。
分类:
Unity项目开发日志
, Unity Editor知识
标签:
Editor
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 易语言 —— 开山篇
· Trae初体验