[Unity]Unity3D编辑器插件扩展和组件扩展

简介:

1. 插件扩展

1.1. 命名空间

using UnityEditor;
using UnityEngine;    //非必需,常用到

1.2. 使用语法

[MenuItem("Assets/My Test")]
private static void Test()
{
    Debug.Log("Hello World!")
}

语法说明

[MenuItem("path $t", Is, Priority)]
private static void Test1()
{}

[MenuItem("path _t", Is, Priority)]
private static void Test2()
{}
  • path 是菜单路径;
    • 一级菜单名称不支持中文
  • $t 是一个快捷键实例,在路径后面接空格,然后加上快捷键表示,单纯的一个按键快捷键按键字符前带下划线。该项非必需
    • % 表示 ctrl
    • # 表示 shift
    • & 表示 alt
  • Is 设置为true的时候,如果没有选中游戏对象,会显示不可用状态,该选项非必需
  • Priority 是优先级,数值越小优先级越高,非必需,其默认值为1000。

下面表示快捷键为"ctrl+h" 的实例。

[MenuItem("Assets/My Test %h")]
private static void Test()
{
    Debug.Log("Hello World!")
}

1.3. Selection类

https://docs.unity3d.com/ScriptReference/Selection.html

1.3.1. 获取选中物体

Selection.Objects可以获得选中的物品。

1.3.2. 获取选中目录

string[] guids = Selection.assetGUIDs;
foreach ( var id in guids )
{
    string path = AssetDatabase.GUIDToAssetPath(id);
    if(Directory.Exists(path))
    {
        Debug.Log(string.format("Directory {0} exist", path))
    }
}

1.4. 给控件添加右上角齿轮菜单增加功能

[MenuItem("CONTEXT/Rigidbody/wyg_test")]
private static TestRightButton()
{
    Debug.Log("右键测试")
}
  • CONTEXT 为固定写法;
  • Rigidbody 是控件名称,可以修改为其他控件;
  • 我使用中文的时候不知道为什么没有显示出来。


1.5. 弹窗

编辑器的弹窗类需要继承EditorWindow

使用方法与GUI的使用方法基本一致,有Init,Awake,OnGUI等函数。

class TestWindow : EditorWindow
{
    public void Init()
    {
    }

    publick void OnGUI()
    {
        GUILayout.Label("Test Window");
        if (GUILayout.Button("Button"))
        {
            Debug.Log("On Button")
        }
    }
}

2. 组件属性展示

以下效果都是组件的显示,所以是属于using UnityEngine;的。

2.1. Range

可以将数值的展示效果变成滑动条效果。

[Range(1, 12)]
public int month;


2.2. Multiline/TextArea

控制占用多行显示。

[Multiline(5)]
public string msg1;

[TextArea(3,5)]
public string msg2;     // 最少显示三行,最多显示五行


2.3. ContextMenuItem/ContextMenu

添加右键小菜单,添加一些小功能。

[ContextMenuItem("Random", "RandomNumber")]
[ContextMenuItem("Reset", "ResetNumber")]
public int number;

void RandomNumber()
{
    number = Random.Range(0, 100);
}

void ResetNumber()
{
    number = 0;
}


还有一个ContextMenu的特性,用法类似。

public string Name;

[ContextMenu("Reset Name")]
private void ResetName()
{
    Name = "";
}


2.4. ColorUsage

设置颜色选择器。

public Color color1;

[ColorUsage(false)]
public Color color2;        // 没有alpha

[ColorUsage(true, true, 0, 8, 0.125f, 3)]
public Color color3;        // HDR

作者:Ron Ngai
出处:http://rondsny.github.io
关于作者:断码码农一枚。
欢迎转载,但未经作者同意须在文章页面明显位置给出原文连接
如有问题,可以通过rondsny#gmail.com 联系我,非常感谢。

本文转自 Ron Ngai 博客园博客,原文链接:http://www.cnblogs.com/rond/p/7652624.html  ,如需转载请自行联系原作者

相关文章
|
11天前
|
图形学 开发者
Unity编辑器脚本(添加/删除)碰撞盒
这段代码提供了两个Unity编辑器工具,用于批量处理模型的碰撞盒。一是“一键添加所有碰撞盒”,通过选择模型的父物体,自动为其子物体添加`MeshCollider`。二是“一键清理所有Collider碰撞盒”,同样选择父物体后,递归删除子物体上的`BoxCollider`组件。两者均通过Unity的菜单项实现便捷操作,方便开发者快速调整场景中的物理属性。
|
29天前
|
人工智能 自然语言处理 计算机视觉
华为鸿蒙自己家的“AI”编辑器插件用起来到底怎么样?
编辑器AI插件如Codegeex、通义灵码等已问世,但通用性较强而不专精。华为推出的CodeGenie专为鸿蒙开发设计,集成在DevEco 5.0.0以上版本中,提供代码补全、生成等功能,尤其擅长处理鸿蒙相关问题,极大降低了鸿蒙开发的门槛。安装后需重启,支持自然语言生成代码,提升了开发效率。
59 13
|
3月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
280 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
3月前
|
缓存 API 开发工具
有关Unity使用Rider编辑器无法弹出代码提示的有效解决方法
【11月更文挑战第13天】在 Unity 中使用 Rider 编辑器时,若遇到代码提示无法弹出的问题,可以通过检查 Rider 设置(如自动补全选项、Unity 插件安装、索引设置)、Unity 项目设置(如解决方案正确关联、脚本导入设置)以及环境和依赖关系(如 .NET SDK 版本兼容性、Unity 和 Rider 版本兼容性)等方面进行排查和解决。
475 5
|
4月前
|
Web App开发 JavaScript 前端开发
用来用去还是用回了ueditor-Vue富文本编辑器二次扩展
用来用去还是用回了ueditor-Vue富文本编辑器二次扩展
71 11
|
5月前
|
JavaScript 前端开发 API
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
本文介绍了如何在Vue 3项目中使用v-md-editor组件库来创建markdown编辑器和预览组件。文章提供了安装步骤、如何在main.js中进行全局配置、以及如何在页面中使用VMdEditor和VMdPreview组件的示例代码。此外,还提供了一个完整示例的链接,包括编辑器和预览组件的使用效果和代码。
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
|
4月前
|
存储 移动开发 小程序
uniapp富文本editor输入二次扩展兼容微信小程序
uniapp富文本editor输入二次扩展兼容微信小程序
169 0
|
5月前
|
设计模式 存储 人工智能
深度解析Unity游戏开发:从零构建可扩展与可维护的游戏架构,让你的游戏项目在模块化设计、脚本对象运用及状态模式处理中焕发新生,实现高效迭代与团队协作的完美平衡之路
【9月更文挑战第1天】游戏开发中的架构设计是项目成功的关键。良好的架构能提升开发效率并确保项目的长期可维护性和可扩展性。在使用Unity引擎时,合理的架构尤为重要。本文探讨了如何在Unity中实现可扩展且易维护的游戏架构,包括模块化设计、使用脚本对象管理数据、应用设计模式(如状态模式)及采用MVC/MVVM架构模式。通过这些方法,可以显著提高开发效率和游戏质量。例如,模块化设计将游戏拆分为独立模块。
304 3
|
6月前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
303 3
|
6月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
550 1

热门文章

最新文章