首页 > 其他分享 >Unity学习笔记之Inspector窗口可编辑的变量

Unity学习笔记之Inspector窗口可编辑的变量

时间:2024-07-25 16:29:24浏览次数:16  
标签:知识点 endregion int region 笔记 Unity Inspector public

 笔记:

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

public enum TypeEnum
{
    Normal,
    Player
}
[System.Serializable]
public struct MyStruct
{
    public int ages;
    public bool sex;
}
[System.Serializable]
public class MyClass
{
    public int ages;
    public bool sex;
}
public class demo : MonoBehaviour
{
    #region Inspector显示的可编辑内容就是脚本的成员变量
    #endregion

    #region 知识点一 私有和保护无法显示编辑
    private int i1;
    protected string str1;
    #endregion

    #region 知识点二 让私有的保护的也可以被显示
    //加上强制序列化字段特性
    //[SerializeField]
    //所谓序列化就是把一个对象保存到一个文件或数据库字段中去
    [SerializeField]
    private int privateInt;
    [SerializeField]
    protected string protectedStr;

    #endregion

    #region 知识点三 公共的可以显示编辑
    public int publicInt=10;
    public bool publicBool = false;
    #endregion

    #region 知识点四 公共的也不让其显示编辑
    //在变量前加上特性
    [HideInInspector]
    public int publicInt2 = 50;
    #endregion

    #region 知识点五 大部分类型都能显示编辑
    public int[] array;
    public List<int> list;
    public TypeEnum type;
    public GameObject gameobject;

    //字典不能被Inspector窗口显示
    public Dictionary<int, string> dic;
    //自定义类型变量
    public MyStruct mystruct;
    public MyClass myclass;
    #endregion

    #region 知识点六 让自定义类型可以被访问
    //加上序列化特性
    //[System.Serializable]
    //字典怎样都不行
    #endregion

    #region 知识点七 一些辅助特性
    //1.分组说明特性Header
    //为成员分组
    //Header
    //[Header("分组说明")]
    [Header("基础属性")]
    public int age;
    public bool sex;
    [Header("战斗属性")]
    public int atk;
    public int def;

    //2.悬停注释Tooltip
    //为变量添加说明
    //[Tooltip("说明内容")]
    [Tooltip("闪避")]
    public int miss;

    //3.间隔特性 Space()
    //让两个字段间出现间隔
   // [Space()]
    [Space()]
    public int crit;

    //4.修饰数值的滑条范围Range
    //[Range(最小值,最大值)]
    [Range(0,10)]
    public float luck;

    //5.多行显示字符串 默认不写参数显示3行
    //写参数就是对应行
    [Multiline(5)]
    public string tips;

    //6.滚动条显示字符串
    //默认不写参数就是超过3行显示滚动条
    //[TextArea(3,4)]
    //最少显示3行 ,最多显示4行,超过4行就显示滚动条
    [TextArea(3, 4)]
    public string myLife;

    //7.为变量添加快捷方式 ContextMenuItem
    //参数1  显示按钮名
    //参数2  方法名 不能有参数
    // [ContextMenuItem("显示按钮名","方法名")]
    [ContextMenuItem("重置钱", "Test")]
    public int money;
    private void Test()
    {
        money = 99;
    }


    //8.为方法添加特性能够在Inspector中执行
   // [ContextMenu("测试函数")]
    [ContextMenu("哈哈哈哈")]
    private void TestFun()
    {
        print("测试方法");
    }
    #endregion

    #region 注意
    //1.Inspector窗口中的变量关联的就是对象的成员变量,运行时改变他们就是在改变成员变量
    public int i = 100;
    //2.拖曳到GameObject对象后 再改变脚本中变量的默认值 界面上不会改变
    //3.运行中修改的信息不会保存
    #endregion
    // Start is called before the first frame update
    void Start()
    {
      
    }

    // Update is called once per frame
    void Update()
    {
        print(i);
    }
}

练习题:

为什么加不同的特性,在Inspector窗口上会有不同的效果,请说出你的理解?

因为Unity中是通过反射得到类的信息

然后在Inspector窗口中显示字段信息

Unity内部通过反射获取字段的特性

当具有一些特殊特性时,便会做对应的处理

标签:知识点,endregion,int,region,笔记,Unity,Inspector,public
From: https://blog.csdn.net/2402_83809362/article/details/140693041

相关文章

  • MySQL 学习笔记 进阶(存储引擎,索引上)
    存储引擎 存储引擎-MySQL体系结构连接层服务层引擎层存储层 存储引擎-简介简介:存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被成为表类型。在创建表时,指定存储引擎CREATETABLE表名(......
  • Datawhale AI 夏令营 第二期 机器学习 Task3 学习笔记 尝试使用深度学习方案
    概要:如何进行时间序列的进阶特征提取与分析如何构建深度学习方案一.时序特征的详细介绍 1.日期变量:时间序列数据通常包含日期或时间信息。这可以细分为不同的时间尺度,如年、月、周、日、小时、分钟等。在特征提取时,可以将这些日期变量转换为数值型特征,以便于模型......
  • JavaSE笔记
    目录一、JAVA基础编程二、第一阶段--JAVA基本语法2.1关键字与保留字2.2标识符2.3变量2.4运算符2.5从键盘获取输入Scanner类2.6流程控制结构2.7循环结构番外篇--软件开发流程番外篇--IDEA使用经验IDEA项目结构2.8一维数组数组的特点2.8.1声明与初始化2.8.1.1静态初始化2.......
  • cobbler学习笔记
    介绍CobblerisaversatileLinuxdeploymentservergithub链接:https://github.com/cobbler/cobbler官网:https://cobbler.github.io/文档:https://cobbler.readthedocs.io/en/latest/quickstart-guide.htmlcobblerindocker博客:https://blog.container-solutions.com/cobbl......
  • 【学习笔记】构造函数、原型对象、原型链
    在JavaScript中,每个对象都有一个原型对象,原型对象也是一个对象,它包含了对象的共享属性和方法。每个构造函数(除了箭头函数)都有一个prototype属性,该属性指向构造函数的原型对象。当我们使用构造函数创建一个新对象时,该对象会继承构造函数的原型对象中的属性和方法,这种继承关系......
  • PostgreSQL学习笔记----GUC机制
    GUC介绍在守护进程Postmaster初始化内存环境之后,需要配置Postmaster运行时所需的各种参数。GUC(GrandUnifedConfiguralion)模块实现了多种数据类型(目前有boolean、int、real、string、enum五种)的变量配置。这些参数可能会由不同的进程在不同的时机进行配置,系统会根据......
  • 【学习笔记】倍增
    【学习笔记】倍增倍增法,顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。ST表RMQ是RangeMaximum/MinimumQuery的缩写,表示区间最大(最小)值。而ST表是用于解决可重复贡献问题的数据结构。记\(f(l,r)\)为\([l,r]\)这个区间的答案,可重......
  • 硬件开发笔记(二十八):TPS54331电源设计(一):5V电源供电原理图设计
    前言  电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来。  本篇描述设计常用的12V转5V电路3A。 TPS54331(DC-DC稳压器)概述  TPS54331器件是一款28V、3A非同步降压转换器,集成有一个低RDS(on)的高侧MOSFET。为了提......
  • Tarjan(连通性相关) 笔记
    概念点(vertex)、边(edge)无向图中若图中存在两点可以到达,则称这两个点是连通的(connected)若图中任意两点都连通,则称该无向图为连通图(connectedgraph)若图\(G\)中存在一个连通子图\(H\)(\(H\subseteqG\)),没有严格更大的连通子图\(I\)使\(H\varsubsetneqqI\),则称\(H\)......
  • Unity UGUI 之 事件接口
    本文仅作学习笔记与交流,不作任何商业用途本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正本文在发布时间选用unity 2022.3.8稳定版本,请注意分别1.什么是事件接口?首先,什么是事件?C#事件-CSDN博客什么是接口?TYNAM测试博客(cnblogs.com)再......