Unity中的一些系统特性

UnityEngine中

CreateAssetMenuAttribute 对ScriptableObject派生类进行标记

使其自动列在Assets/Create子菜单中,方便创建.asset的文件

[CreateAssetMenu(fileName ="Test",menuName ="test",order = 1)]
public class TestCreateAssetMenu : ScriptableObject
{ 
}

ContextMenuItemAttribute 为字段添加鼠标右键点击事件

代码

public class ContextMenuItemAttributeTest : MonoBehaviour
{
//第一个参数是自定义在窗口右键点击后显示的名称
//第二个参数是要对字段点击右键绑定的方法名
   [ContextMenuItem("Calculate","Calculation")]
    public int mCount=0;
    public void Calculation()
    {
       mCount+=1;
    }
}

结果
当点击鼠标右键时会出现要执行的方法mCount=1

RangeAttribute 范围特性

用于将脚本中的 float 或 int 变量限制在特定范围内的属性。
代码:

public class RangeAttributTest : MonoBehaviour
{
    [Range(1,10)]//RangAttribute Attribute省略
    public float mValues;
}

效果图

SpaceAttribute 控制Inspetor面板的间隔

public class SpaceAttributeTest : MonoBehaviour{
	
    public int mCount=1;
    public int mKey=2;
    [Space (20)]
	public string playerName = "Unnamed";
    [Space(10)]
    public string playPass="aaaaa";
}

效果图

HeaderAttribute 增加一个label描述

代码

public class HeaderAttributeTest : MonoBehaviour
{
    [Header("hp Settings")]
    public int mHp=0;
    [Header("exp set")]
    public float mExp=0;
}

效果图
效果图

MultilineAttribute 控制inspector面板上string显示的行数

代码

public class MultilineAttributeTest : MonoBehaviour
{
    //使用多行文本字段编辑字符串的属性
    [Multiline(1)]
    public string str="asd";
    [Multiline(3)]
    public string text;
}

效果图

SelectionBaseAttribute 控制有多个子物体的物体如何一次选中要选中的基础

只需要将selectionBase添加到类上部,然后将脚本添加到要控制选中的对象
案例

[SelectionBase]
public class SelectionBaseAttributeTest : MonoBehaviour{ }

在这里插入图片描述
在NullObject上添加SelectionBaseAttributeTest脚本就可以控制点击到capsule时会先选中NullObject物体(其中NullObject是GameObject),也就是会根据你设置的基础点击进行渗透到下一个

TextAreaAttribute 制作 可滚动的文本区域编辑字符串的属性。

脚本

public class TextAreaAttributeTest : MonoBehaviour
{
  [TextArea]
  public string mName;
  [TextArea(1,4)]
  public string mPassword;
}

效果图 如果文本大于可用区域,则会出现滚动条。

TooltipAttribute 为字段在Inspector面板添加点击出现描述功能

代码

public class ToolTipAttributeTest : MonoBehaviour
{
    [Tooltip("姓名")]
   public string mName;
   [Tooltip("密码")]
   public string mPs;
}

效果图
效果图

AddComponentMenu 在component菜单中某个位置添加当前脚本

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

UnityEditor中的

InitializeOnLoadAttribute 允许在 Unity 加载时初始化编辑器类而无需用户操作。

案例

[InitializeOnLoad]
public class InitializeOnLoadAttributeTest 
{
    static InitializeOnLoadAttributeTest()
    {
       Show();
    }
    public static void Show()
    {
        Debug.Log("Show函数");
    }
}

效果在编辑器模式下会输出“Show函数”
官方案例

[InitializeOnLoad]
class MyClass
{
    static MyClass ()
    {
        EditorApplication.update += Update;
    }

    static void Update ()
    {
        Debug.Log("Updating");
    }
}

会一直输出"Updating"

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值