【Unity编辑器扩展简介】在MonoBehaviour中可使用的编辑器扩展Attribute

1 改变Inspector的外观

范围

对于数值变量,可以通过添加Range属性来限定面板中数值的范围:

这里写图片描述

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : 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;
}
多行/文本区

这里写图片描述

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
    [Multiline(5)]
    public string multiline;

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

2 增加一个功能

ContextMenuItem

ContextMenuItem可以让我们让我们右键点击面板中特定属性而选择自定义的一些函数操作

这里写图片描述

ColorUsage

ColorUsage是一个颜色选择器,可以更改HDR拾色器,启用/禁止Alpha

这里写图片描述

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public Color color1;

    [ColorUsage (false)]
    public Color color2;

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

3 调整Inspector外观布局

只是用来显示一个Header,用以区块之间的区分

这里写图片描述

using UnityEngine;
using System;

public class NewBehaviourScript : MonoBehaviour
{
    [Header("Player Settings")]
    public Player player;

    [Serializable]
    public class Player
    {
        public string name;

        [Range(1,100)]
        public int hp;
    }

    [Header("Game Settings")]
    public Color background;
}
Space

绘制空格

这里写图片描述

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [Space(16)]
    public string str1;

    [Space(48)]
    public string str2;
}
Tooltip

作提示用

这里写图片描述

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [Tooltip("これはツールチップです")]
    public long tooltip;
}
HideInInspector

在Inspector中隐藏public变量

这里写图片描述

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public string str1;

    [HideInInspector]
    public string str2;
}

便利Inspector

RequireComponent

要求必须拥有某一组件,如果没有则自动添加

这里写图片描述

using UnityEngine;

[RequireComponent(typeof(Animator))]
public class NewBehaviourScript : MonoBehaviour
{
    Animator animator;

    void Awake ()
    {
        animator = GetComponent<Animator> ();
    }
}
DisallowMultipleComponent

不允许同时拥有两个相同的组件

这里写图片描述

FormerlySerializedAs

原来是这样的

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [SerializeField]
    string hoge;
}

后来修改代码成了

using UnityEngine;
using UnityEngine.Serialization;

public class NewBehaviourScript : MonoBehaviour
{
    [SerializeField]
    [FormerlySerializedAs("hoge")]
    string fuga;
}

照理说原来面板上hoge的填充数据会丢失,但因为我们使用了FormerlySerializedAs,所以原来hoge序列化的数据就会被赋值给fuga。

这里写图片描述 这里写图片描述

简化游戏开发

ExecuteInEditMode

不运行游戏,仅仅在Editor下也会运行MonoBehaviour

sing UnityEngine;

[ExecuteInEditMode]
public class NewBehaviourScript : MonoBehaviour
{
    [Range(0,10)]
    public int number;

    void Awake ()
    {
        Debug.Log ("Awake");
    }

    void Start ()
    {
        Debug.Log ("Start");
    }

    void Update ()
    {
        Debug.Log ("Update");
    }
}
ContextMenu

给Component添加上下文菜单
这里写图片描述

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    [Range (0, 10)]
    public int number;

    [ContextMenu ("RandomNumber")]
    void RandomNumber ()
    {
        number = Random.Range (0, 100);
    }

    [ContextMenu ("ResetNumber")]
    void ResetNumber ()
    {
        number = 0;
    }
}
SelectionBase

当在场景中选择游戏体的时候,指定要选择的游戏对象。比如A的父物体是B,当在场景中点击A的时候,Hierarchy中有限会选中B。(2D中测试出来感觉没用,3D中有用)
这里写图片描述

using UnityEngine;

[SelectionBase]
public class NewBehaviourScript : MonoBehaviour
{
}

参考:http://anchan828.github.io/editor-manual/web/part2-standardextension.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值