Unity 编辑器扩展之 Attribute

这篇具有很好参考价值的文章主要介绍了Unity 编辑器扩展之 Attribute。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity内置属性[Attribute]是一种类似修饰功能的标签。可以对OnSceneGUI,InspectorGUI,MenuGUI,WindowGUI等实现各种各样的GUI扩展。用户只要添加上特性标签,就能够自由的使用这些扩展功能。下面列出一些常用的标签:

HideInInspector

隐藏属性在Inspector面板上的显示。在继承了MonoBehaviour的类中,用public修饰的变量如果可以被序列化,那么就会在Inspector中显示,使用HideInInspector可以让他不显示。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [HideInInspector]
    public string heroName;
}

Header

Header用来给属性添加标题文字。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [Header("Hero current blood")]
    public float blood;
}

Unity 编辑器扩展之 Attribute

Tooltip

Tooltip用来显示属性标签的提示文字。当鼠标移动到该属性字段上的时候会出现相应的提示。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [Tooltip("Hero current blood")]
    public float blood;
}

Unity 编辑器扩展之 Attribute

Space

Space,空间占位,可以调整两个属性块之间的间隔距离。可以传参数,表示间距大小,单位是像素。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    public float heart;
    [Space()]
    public float blood;

    [Space(20)]
    public float money;
}

Unity 编辑器扩展之 Attribute

Range

Range使得用户可以使用Slider对类似于int,float,long,double这一类的数值类型进行改变。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [Range(1, 10)]
    public int num1;

    [Range(1, 10)]
    public float num2;

    [Range(1, 10)]
    public long num3;

    [Range(1, 10)]
    public double num4;
}

Unity 编辑器扩展之 Attribute

Mulitline/TextArea

Textfile默认情况下是只有一行的,但同时也能变成复数行显示的TextArea。Multiline和TextArea功能大致上相同,不过Multiline有着[无法依据宽度自动换行]和[不能使用scroll表示]的限制。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [Multiline(5)]
    public string multiline;

    [TextArea(3, 5)]
    public string textArea;
}

Unity 编辑器扩展之 Attribute

ColorUsage

颜色拾取器。第一个参数控制是否显示透明通道,第二个参数控制是否使用HDR。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [ColorUsage(true)]
    public Color color1;

    [ColorUsage(true,true)]
    public Color color2;
}

Unity 编辑器扩展之 Attribute

SerializeField

Unity 默认不会序列化私有变量,如果想强制序列化一个私有变量,那么可以用SerializeField修饰。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [SerializeField]
    private string str;
}

Unity 编辑器扩展之 Attribute

ExecuteInEditMode

在 Unity 中继承MonoBehaviour的脚本,并不是一直都会执行的。Unity默认只有在Play Mode下,才会运行场景里GameObject下挂载的脚本。如果想在编辑状态下也执行该脚本可以用ExecuteInEditMode修饰,也可以用ExecuteAlways修饰。

using UnityEngine;
[ExecuteInEditMode]
public class PuzzleHero : MonoBehaviour
{
  private void Awake()
  {
    Debug.Log("Excute In Edit Model");
  }
}

HelpURL

在class类上进行帮助文档的链接的设定,设置之后可以点击脚本右上角的问号按钮可以调到对应的网页。

using UnityEngine;
[HelpURL("https://www.xrlmall.top")]
public class PuzzleHero : MonoBehaviour
{

}

Unity 编辑器扩展之 Attribute

AddComponentMenu

可以在UnityEditor的Component的Menu中增加自定义的项目。菜单可以设置多级,使用斜线/分隔即可。在Hierarchy中选中GameObject的时候,点击该菜单项,就可以在GameObject上追加该Component,或者在Inspector面板点击“Add Component”按钮追加。

using UnityEngine;
[AddComponentMenu("Custom/PuzzleHero")]
public class PuzzleHero : MonoBehaviour
{
    
}

Unity 编辑器扩展之 Attribute

ContextMenu

可以在Inspector的ContextMenu中增加选项,执行某个操作。

using UnityEngine;
public class PuzzleHero : MonoBehaviour
{
    [ContextMenu("SaveFile")]
    void DoSomething()
    {
        Debug.Log("save level data to file");
    }
}

Unity 编辑器扩展之 Attribute

DisallowMultipleComponent

对一个MonoBehaviour的子类使用这个属性,那么在同一个GameObject上面,最多只能添加一个该Class的实例。

using UnityEngine;
[DisallowMultipleComponent]
public class PuzzleHero : MonoBehaviour
{
  
}

尝试添加多个的时候,会出现下面的提示。

Unity 编辑器扩展之 Attribute

RequireComponent

在Class上使用,添加对另一个Component的依赖。当该Class被添加到一个GameObject上的时候,如果这个GameObject不含有依赖的Component,会自动添加该Component。且该Componet不可被移除。

using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class PuzzleHero : MonoBehaviour
{
  
}

Unity 编辑器扩展之 Attribute

自动添加Rigidbody,并且不能被移除

MenuItem

快捷键打开资源路径文章来源地址https://www.toymoban.com/news/detail-405533.html

public class EditorTool
{
	//Alt+R打开资源路径
	[MenuItem("HSJ/快捷方式/打开UI预制路径 &R")]
	static void OpenResourcesUIPanel()
	{
		Selection.activeObject  = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/Resources/Prefab/Panel/LoginPanel.prefab");
	}
	//Alt+S打开脚本路径
	[MenuItem("HSJ/快捷方式/打开Panel脚本路径 &S")]
	static void OpenScript()
	{
		Selection.activeObject = AssetDatabase.LoadAssetAtPath<TextAsset>("Assets/Scripts/MessageBoxPanel.cs");
	}
	//Alt+S打开指定文件夹路径
	[MenuItem("HSJ/快捷方式/打开工程目录 &O")]
	private static void OpenProjectFolder()
	{
		EditorUtility.RevealInFinder(Application.dataPath);
	}
}

到了这里,关于Unity 编辑器扩展之 Attribute的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity编辑器扩展之GenericMenu菜单扩展

    内容将会持续更新,有错误的地方欢迎指正,谢谢!   Unity编辑器扩展之GenericMenu自定义菜单       TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取! 助力快速掌握 GenericMenu 菜单扩展 为初学者节省宝贵的

    2024年02月01日
    浏览(76)
  • Unity 扩展自定义编辑器窗口

    在Assets文件夹路径下任意位置创建Editor文件夹,将扩展编辑器的代码放在Editor文件夹下 代码中首先引用命名空间 然后将创建的类继承自EditorWindow 然后通过扩展编辑器菜单功能调用创建窗口的方法 要注意方法中泛型参数需要传入的是自己代码的类,这个功能是根据后面OnGUI方

    2024年04月27日
    浏览(57)
  • Unity编辑扩展:功能篇之Json数据编辑器

    前言 编辑器扩展算是比较纯粹的功能开发,基本没有什么理论知识,都是一些 Unity 相关接口的使用与数据类型的设计操作等。在本篇文章主要的文字描述基本都是在做代码解释,为了使内容接受度更高,我会尽量描述到代码结构中的每个细节。如果有对此不太了解又很感兴

    2024年02月06日
    浏览(103)
  • 【Unity编辑器扩展】| Inspector监视器面板扩展

    前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。 后面就来针对Uniity编辑器扩展中比较常用的模块进行学习介绍。 本文就来详细介绍一下Unity编辑器扩展中关于 Inspector面板 扩展功能学习。

    2024年02月08日
    浏览(65)
  • 盘点Unity几款编辑器扩展工具

    unity 编辑器一个不容忽视的强大之处就是非常易于自定义扩展工具,来满足各种各样的美术、策划及程序上的需求。今天为大家介绍Asset Store资源商店中几款实用的编辑器扩展工具,帮助大家直接在Unity编辑器中完成3D建模与调整工作,免去与其它软件进行数据转换的过程,从

    2024年04月09日
    浏览(48)
  • Unity编辑器扩展-第四集-获取物体的方法

    第三集链接:Unity编辑器扩展-第三集-添加按钮到组件菜单并且重置组件_菌菌巧乐兹的博客-CSDN博客  一、本节目标+效果展示 1.改选中单个物体的名字 2.改选中所有物体的名字  3.选中了所有的物体,但只改第一层物体的名称  4.来个有用的(选中的所有物体,按顺序起名)

    2024年02月14日
    浏览(58)
  • 【Unity UIToolkit】UIBuilder基础教程-制作简易的对话系统编辑器 3步教你玩转Unity编辑器扩展工具

    随着Unity开发的深入,基本的Unity编辑器界面并不能满足大部分玩家高阶开发的要求。为了提高开发的效率,有针对性的定制化扩展编辑器界面是提高开发效率的不错选择。 今天就给大家带来Unity官方提高的编辑器扩展工具UIToolkit(集成了UIBuilder和UI Debugger等插件)的使用教程。

    2024年02月04日
    浏览(72)
  • Unity编辑器扩展-第六集-创建窗口/批量填图

    第五集链接:Unity编辑器扩展-第五集-撤回操作/禁止操作/加快捷键_菌菌巧乐兹的博客-CSDN博客 一、本节目标+效果展示 1.创建窗口 2.图片批量赋值到物体上 二、创建窗口  这个功能其实也很好理解,我们之前学了点击选择,但 我们难免会遇见需要选不同位置,不同种类的很多

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包