IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> 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;
}

Tooltip

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

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

Space

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

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

    [Space(20)]
    public float money;
}

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

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

ColorUsage

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

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

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

SerializeField

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

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

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
{

}

AddComponentMenu

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

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

ContextMenu

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

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

DisallowMultipleComponent

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

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

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

RequireComponent

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

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

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

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:44:40  更:2022-04-01 23:45:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 19:02:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码