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

news/2024/10/22 2:30:14/

 笔记

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 updatevoid Start(){}// Update is called once per framevoid Update(){print(i);}
}

练习题:

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

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

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

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

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


http://www.ppmy.cn/news/1501268.html

相关文章

【React】通过实际示例详解评论列表渲染和删除

文章目录 一、引言二、初始状态与状态更新1. 使用useState钩子管理状态2. 评论列表的初始数据 三、列表渲染的实现1. list.map(item > { ... })2. return 语句3. JSX 语法4. 为什么这样设计5. 完整解读 四、列表项的唯一标识1. key 的作用2. key 的用法3. 可以没有 key 吗&a…

Postman中的数据驱动测试:API测试数据准备全攻略

Postman中的数据驱动测试&#xff1a;API测试数据准备全攻略 在API测试中&#xff0c;数据准备是确保测试覆盖全面性和准确性的关键步骤。Postman&#xff0c;作为业界领先的API开发工具&#xff0c;提供了强大的数据准备功能&#xff0c;允许用户轻松创建动态测试脚本。本文将…

解决python bug(关于Paddle分布式训练):Exit with signal X

解决python bug[关于Paddle分布式训练]&#xff1a;Exit with signal X 多卡训练(需根据自己需求进行更改)单卡训练(需根据自己需求进行更改) 本人在通过Paddle实现多目标检测跟踪时遇到了一个小bug。 Exit with signal X 后来通过查询相关资料得知&#xff0c;引发这个bug的原…

英特尔宣布针对对Llama 3.1进行优化 以提升所有产品的性能

日前Meta正式发布了Llama 3.1开源大模型&#xff0c;以其庞大的参数量和卓越性能&#xff0c;首次在多项基准测试中击败了GPT-4o等业界领先的闭源模型。允许开发者自由地进行微调、蒸馏&#xff0c;甚至在任何地方部署&#xff0c;这种开放性为AI技术的普及和创新提供了无限可能…

godot新建项目及设置外部编辑器为vscode

一、新建项目 初次打开界面如下所示&#xff0c;点击取消按钮先关闭掉默认弹出的框 点击①新建弹出中间的弹窗②中填入项目的名称 ③中设置项目的存储路径&#xff0c;点击箭头所指浏览按钮&#xff0c;会弹出如下所示窗口 根据图中所示可以选择或新建自己的游戏存储路径&…

Django 表单常用字段参数

Django Form表单&#xff0c;常用表单字段-CSDN博客 在Django中&#xff0c;表单&#xff08;Form&#xff09;是用来处理HTML表单数据的重要工具。Django的表单API允许你定义表单字段及其验证规则。每个表单字段都可以通过多种参数来定制其行为。以下是一些常用的表单字段参数…

无人机10公里WiFi图传摄像模组,飞睿智能超清远距离无线监控,智能安防新潮流

在这个科技日新月异的时代&#xff0c;我们对影像的捕捉和传播有了更高的要求。从传统的有线传输到无线WiFi图传&#xff0c;每一次技术的飞跃都为我们带来了全新的视觉体验。今天&#xff0c;我们要探讨的&#xff0c;正是一款具有划时代意义的科技产品——飞睿智能10公里WiFi…

Python的正则表达式

学完Python的基础语法还远远不够&#xff0c;还需要学习一些进阶用法&#xff0c;Python的正则表达式就是其一&#xff0c;什么是正则表达式呢&#xff0c;就我理解&#xff0c;就是用来检索一些需要的信息&#xff0c;比如说从一段文本中找出其中全部的数字或者字母&#xff0…