Unity中有用的特性Attributes

文章目录

实用特性

可序列化
[Serializable]
使用该特性修饰的类,其公有对象可以显示在Inspector面板

[Serializable]
public class TestType
{
    public string name;
    public int num;
    public float price;
}

public class Test_Serializable : MonoBehaviour
{
    public TestType type;
}

在这里插入图片描述


在属性面板隐藏
[HideInInspector]
使变量不显示在 Inspector 中

public class Test_HideInInspector : MonoBehaviour
{
    [HideInInspector]
    public int age;
}

在这里插入图片描述


最小值
[Min(最小值)]
设置数值的最小值

public class Test_MinAttribute : MonoBehaviour
{
    [Min(1)]
    public int age;
}

在这里插入图片描述


范围
Range
设置数值的最大最小值

public class Test_RangeAttribute : MonoBehaviour
{
    [Range(1,100)]
    public int rank;

    [Range(0.1f, 1)]
    public float value;
}

在这里插入图片描述


序列化字段
[SerializeField]
可以将私有的字段显示在属性面板

public class Test_SerializeField : MonoBehaviour
{
    [SerializeField]
    int age;
}

在这里插入图片描述


花哨特性

提示
[Tooltip(提示内容)]
鼠标放在字段名上一段时间后,显示提示文字

public class Test_TooltipAttribute : MonoBehaviour
{
    [Tooltip("年龄")]
    public int age;
}

在这里插入图片描述


空隙
[Space]
可以在字段之间空开一定的距离

public class Test_SpaceAttribute : MonoBehaviour
{
    public int value;
    [Space]
    public Vector3 point;
    [Space]
    [Space]
    public string content;
}

在这里插入图片描述


标题
[Header(标题名)]
用于分割字段,给同一类的字段加上标题

public class Test_HeaderAttribute : MonoBehaviour
{
    [Header("基本信息")]
    public string name;
    public int age;
    public bool sex;

    [Header("其它信息")]
    public string address;
}

在这里插入图片描述


菜单相关特性

添加Component中的子菜单
[AddComponentMenu(菜单项目录)]
使用该特性,可以将已有的脚本放在菜单栏Component下的任意位置,默认是在Scripts中

[AddComponentMenu("梁志文/AttributesTest")]
public class AttributesTest : MonoBehaviour
{
}

在这里插入图片描述


为组件添加菜单
[ContextMenu(菜单名)]
使用该特性可以将某个函数以菜单方式添加到Inspector面板

public class Test_ContextMenu : MonoBehaviour
{
    [ContextMenu("打个招呼")]
    public void Test()
    {
        print("你好");
    }
}

在这里插入图片描述

在这里插入图片描述


为变量添加菜单
[ContextMenuItemAttribute(菜单名,函数名)]
使用该特性可以为某个字段(变量)添加一个菜单,右击字段会显示菜单

public class Test_ContextMenuItemAttribute : MonoBehaviour
{
    [ContextMenuItem("清空文本", "ClearText")]
    public string text;

    void ClearText()
    {
        text = "";
    }
}

在这里插入图片描述


组件相关特性

自动添加组件
[RequireComponent(typeof(类名))]
使用该特性修饰的类,类所挂载的物体会自动添加指定类名的组件

[RequireComponent(typeof(Rigidbody))]
public class Test_RequireComponent : MonoBehaviour
{
}

在这里插入图片描述


禁用重复添加同一组件
[DisallowMultipleComponent]
使用该特性可以防止某个组件不小心添加了多次

[DisallowMultipleComponent]
public class Test_DisallowMultipleComponent : MonoBehaviour
{
}

有DisallowMultipleComponent特性的组件只能添加一个,否则可以添加多次

在这里插入图片描述


文本相关特性

文本区域
[TextArea(最小行数,最大行数)]
当文本内容超过最大行数时,显示滚动条

public class Test_TextAreaAttribute : MonoBehaviour
{
    [TextArea(2,4)]
    public string info;
}

在这里插入图片描述


文本多行
[Multiline(行数)]
设置文本框的行数

public class Test_MultilineAttribute : MonoBehaviour
{
    [Multiline(2)]
    public string name;

    [Multiline(5)]
    public string info;
}

在这里插入图片描述


其它特性

延时传递
[DelayedAttribute]
可以延迟传递数值,当按下回车或失去焦点时,数据才会传递给变量

public class Test_DelayedAttribute : MonoBehaviour
{
    [DelayedAttribute]
    public int value = 100;
    int oldValue;
    // Start is called before the first frame update
    void Start()
    {
        oldValue = value;
    }

    // Update is called once per frame
    void Update()
    {
        if (oldValue != value)
        {
            string message = string.Format("数值发生改变\n原数值:{0}\n新数值:{1}", oldValue, value);
            oldValue = value;
            print(message);
        }
    }
}

在这里插入图片描述


修改数值后,只有当按下回车,或者鼠标点击输入框之外,Value的值才会改变

在这里插入图片描述


总是执行
[ExecuteAlways]
脚本挂载到GameObject上时一直执行,不论是在播放模式还是编辑模式。(没加该特性时,只有在播放模式才执行)

[ExecuteAlways]
public class Test_ExecuteAlways : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        if(Application.IsPlaying(this.gameObject))
        {
            print("在播放模式下开始运行");
        }
        else
        {
            print("在编辑模式下开始运行");
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (Application.IsPlaying(this.gameObject))
        {
            print("在播放模式下运行中");
        }
        else
        {
            print("在编辑模式下运行中");
        }
    }
}
  • 编辑模式

    在这里插入图片描述


    在这里插入图片描述

  • 播放模式

    在这里插入图片描述


    在这里插入图片描述


帮助链接
[HelpURL(链接)]
点击问号❓,跳转的帮助文档链接

[HelpURL("https://blog.csdn.net/weixin_44611096/category_10287911.html")]
public class Test_HelpURLAttribute : MonoBehaviour
{
    
}

在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_44611096/article/details/111463712

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍Unity中地面检测方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.普通射线在角色坐标(一般是脚底)...
这篇文章主要介绍了Unity游戏开发中如何消除不想要的黄色警告,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
这篇文章主要介绍了Unity中有多少种渲染队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D 如上图,Texture2D是一张
小编给大家分享一下Unity中DOTS要实现的特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
这篇文章给大家分享的是有关unity中如何实现UGUI遮罩流光特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是核心shader:Sh...
这篇文章主要为大家展示了“Unity中如何实现3D坐标转换UGUI坐标”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下...
这篇文章主要介绍了Unity游戏开发中设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍了Unity中如何实现仿真丝袜渲染,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
这篇文章给大家分享的是有关Unity插件OVRLipSync有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目需要接入对话口型动...
这篇文章主要介绍了Unity性能优化之DrawCall的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章给大家分享的是有关Unity给力插件之Final IK怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这插件有什么用:一般游...
这篇文章给大家分享的是有关Unity中如何内嵌网页插件UniWebView的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、常见Unity中内...
小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
小编给大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收...
这篇文章将为大家详细讲解有关Unity中LineRenderer与TrailRenderer有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获...
这篇文章主要介绍了Unity中coroutine问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到...
这篇文章主要为大家展示了“Unity Shader后处理中如何实现简单均值模糊”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学...