Unity Editor 知识点整理(特性 Class)

[Serializable]

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;


public class InspectorClass : MonoBehaviour
{
    
    
    public SerializeableClass SClass;
}

[Serializable] //序列化一个类,作为一个子属性显示在监视面板
public class SerializeableClass
{
    
    
    public int Int;
    public bool boolean;
    public string String;
}

把脚本挂载在对象上获得如下效果,该方法同样适用于类 结构体 枚举 委托
在这里插入图片描述

RequireComponent

[RequireComponent(typeof(Rigidbody))]
public class InspectorClass : MonoBehaviour
{
    
    
    public SerializeableClass SClass;
}

[Serializable] //序列化一个类,作为一个子属性显示在监视面板
public class SerializeableClass
{
    
    
    public int Int;
    public bool boolean;
    public string String;
}

RequireComponent会自动添加需要的组件,并且该组件不能被移除
把脚本挂载在对象上获得如下效果,自动添加了RigidBody组件
在这里插入图片描述

DisallowMultipleComponent
防止将相同类型(或子类型)的 MonoBehaviour 多次添加到 GameObject。

[RequireComponent(typeof(Rigidbody)),DisallowMultipleComponent]
public class InspectorClass : MonoBehaviour
{
    
    
    public SerializeableClass SClass;
}

[Serializable] //序列化一个类,作为一个子属性显示在监视面板
public class SerializeableClass
{
    
    
    public int Int;
    public bool boolean;
    public string String;
}

当想把该脚本第二次挂载在相同对象时,会出现如下错误
在这里插入图片描述

[ExecuteInEditMode]
Makes all instances of a script execute in Edit Mode.
让该类的所有实例可以在编辑模式下运行
注意的是,Update平常是不运行的,只有其中的属性值发生变化的时候,update才会运行

[ExecuteInEditMode]// Makes all instances of a script execute in Edit Mode.
public class InspectorClass : MonoBehaviour
{
    
    
    public SerializeableClass SClass;

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

把该脚本挂载到对象上后,会发现,没有点击运行也打印出了hhh

[CanEditMultipleObjects]
允许当选择多个挂有该脚本的对象时,统一修改值
在选择了多个对象后,不具有此属性的编辑器将会显示"Multi-object editing not supported"消息

在这里插入图片描述

AddComponentMenu
使用 AddComponentMenu 属性可在“Component”菜单中的任意位置放置脚本,而不仅是“Component > Scripts”菜单。
使用此属性可以更好地组织 Component 菜单,从而改进添加脚本时的工作流程


[AddComponentMenu("Transform/AddComponentMenuTest")]
public class AddComponentMenuTest : MonoBehaviour
{
    
    
    
}

挂载脚本后会在Transform下找到自定义脚本
在这里插入图片描述
将此属性添加到脚本类,可将其 GameObject 标记为 Scene View 选取的选择基础对象。

[SelectionBase]
在 Unity Scene View 中,当单击以选择对象时,Unity 将尝试找出为您选择的最佳对象。如果您单击作为预制件一部分的某个对象,则会选择该预制件的根,因为预制件根被视为选择基础。您也可以使其他对象被视为选择基础。
您需要创建具有 SelectionBase 属性的脚本类,然后需要将该脚本添加到 GameObject。
Add this attribute to a script class to mark its GameObject as a selection base object for Scene View picking.

参考资料
https://blog.csdn.net/qq_35361471/article/details/84715294
https://docs.unity.cn/cn/current/ScriptReference/AddComponentMenu.html

猜你喜欢

转载自blog.csdn.net/qq_43388137/article/details/122192300
今日推荐