Unity 中Sirenix.OdinInspector 插件常用功能梳理

案例一


public class PracticeAssets : ScriptableObject
{[SerializeField][Searchable][ListDrawerSettings(ShowIndexLabels = true)][LabelText("练习版数据列表")]public List<PracticeData> Practicies = new List<PracticeData>();
}
1. SerializeField
  • 用途:此特性允许 Practicies 字段在 Unity 编辑器中可见并可序列化,即使它是一个 private 字段也能被 Inspector 显示出来。
  • 效果:使得程序员在脚本中定义的某个字段(在这里是 Practicies)能够在 Unity 编辑器的 Inspector 面板中进行赋值和编辑。
2. [Searchable]
  • 用途:这个特性通常用于自定义类或框架中的数据结构,允许在 Inspector 中搜索列表。这意味着在该列表中可以快速找到特定的 PracticeData
  • 效果:增强 UX(用户体验),使得在大量数据项中快速定位特定项变得容易。
3. [ListDrawerSettings(ShowIndexLabels = true)]
  • 用途:使用这个特性可以自定义列表在 Inspector 中的显示方式。这里的 ShowIndexLabels 设置为 true,表示在列表的每一项前面显示它们的索引标签(如 0, 1, 2...)。
  • 效果:使列表更加易于理解和管理,尤其在处理多个 PracticeData 实例时,索引能够帮助用户快速识别和访问特定项。
4. [LabelText("练习版数据列表")]
  • 用途:此特性用于指定在 Unity 编辑器 Inspector 中显示的标签。这允许您为 Practicies 列表设置一个更具描述性的名称而非默认的字段名称。
  • 效果:在 Inspector 中显示为“练习版数据列表”,提高可读性,并提供有意义的上下文信息,帮助开发者理解这个字段的用途。
5. public List<PracticeData> Practicies = new List<PracticeData>();
  • 用途:这是字段的声明。它定义了一个 public 类型的列表,列表中是 PracticeData 类型的对象。
  • 效果:允许将多个 PracticeData 实例存储在 Practicies 列表中,同时由于是 public,可以在其它类中直接访问此列表。

案例二

public class IndustryAssets : ScriptableObject
{[SerializeField][Searchable][ListDrawerSettings(ListElementLabelName = "GetClassName")][LabelText("行业列表")]public List<IndustryData> Industry = new List<IndustryData>();
}
1.[ListDrawerSettings(ListElementLabelName = "GetClassName")]
  • 用途:此特性用于配置列表的显示方式。在这里,ListElementLabelName 指定使用 GetClassName 方法返回的值作为每个列表项的标签。
  • 效果:使得在 Inspector 中查看 Industry 列表时,每个 IndustryData 实例将使用其 GetClassName() 方法的返回值作为标签,使得列表更具可读性和可管理性。

案例三

[ReadOnly]  
[GUIColor("red")]  
[LabelText("数据验证:")]  
public string ErrorMessage;
1.[ReadOnly]
  • 用途:表示该字段在 Unity Inspector 中为只读,不允许用户编辑。
  • 效果:防止用户在 Inspector 中修改该字段的值,确保程序逻辑控制该字段。
2.[GUIColor("red")]
  • 用途:为该字段指定一个颜色,这里设置为红色。
  • 效果:在 Inspector 中显示该字段时,以红色突出显示,通常用于表示错误或警告消息。

案例四

[Space]  
[Searchable]  
[OnStateUpdate("CheckList")]  
[ListDrawerSettings(ShowIndexLabels = true)]  
[LabelText("隐患点数据列表")]  
public List<DataConfigStruct> DataList = new List<DataConfigStruct>();
1.[Space]
  • 用途:在 Inspector 中创建一个空间,用于分隔不同的部分。
  • 效果:使变量的布局更清晰,不会拥挤在一起。
2.[OnStateUpdate("CheckList")]
  • 用途:在状态更新时自动调用 CheckList 方法。
  • 效果:每当数据发生改变或进入检查状态时,CheckList 方法会被自动调用,以验证数据的完整性。
3.[ListDrawerSettings(ShowIndexLabels = true)]
  • 用途:配置列表在 Inspector 中的显示方式,显示每个元素的索引标签。
  • 效果:使得用户可以看到列表中每一项的位置编号,便于管理和引用特定项。

方法 CheckList

private void CheckList()  
{  // 检查应用程序是否正在运行,如果是,则不执行验证逻辑  if (Application.isPlaying)  return;  // 创建一个用于存储所有 ID 的列表  List<uint> idList = new List<uint>();  // 遍历 DataList 列表,提取每个 DataConfigStruct 对象的 ID  for (int i = 0; i < DataList.Count; i++)  {  // 将每个对象的 ID 添加到 idList 列表中  idList.Add(DataList[i].ID);  }  // 使用 LINQ 查询查找重复的 ID 值  var duplicates = idList.GroupBy(n => n) // 根据 ID 分组  .Where(g => g.Count() > 1) // 只选择计数大于 1 的组,即重复的 ID  .Select(g => g.Key); // 选择每个重复组的 ID  // 检查是否存在重复的 ID  if (duplicates.Count() > 0)  {  // 如果发现重复 ID,更新错误信息  foreach (var number in duplicates)  {  // 设置错误信息,包含找到的重复 ID  ErrorMessage = string.Format("验证不通过,存在相同的唯一ID: {0}", number);  }  }  else  {  // 如果没有重复 ID,设置验证通过的消息  ErrorMessage = string.Format("验证通过");  }  
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/896460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ | 面向对象 | 类

&#x1f47b;类 &#x1f47e;语法格式 class className{Access specifiers: // 访问权限DataType variable; // 变量returnType functions() { } // 方法 };&#x1f47e;访问权限 class className {public:// 公有成员protected:// 受保护成员private:// 私有成员 }…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(五) 实现登录功能

1.登录页面 完善登录页面 和注册差不多 直接copy signUpPage 内容 再稍微修改下 import { useState } from "react"; import { useAuthStore } from "../store/useAuthStore"; import { MessageSquare,Mail,Lock,Eye, EyeOff,Loader2} from "lucide…

Spring Boot电影评论网站系统设计与实现

随着互联网和娱乐产业的发展&#xff0c;电影评论网站逐渐成为人们分享观影体验、交流影评的重要平台。本文将介绍一个基于Spring Boot框架开发的电影评论网站系统的功能设计与实现方案。 功能模块概述 该电影评论网站系统分为管理员模块和用户模块两大核心部分&#xff0c;以…

XFeat:轻量级的深度学习图像特征匹配

一、引言&#xff1a;图像特征匹配的挑战与XFeat的突破 在计算机视觉领域&#xff0c;图像特征匹配是视觉定位&#xff08;Visual Localization&#xff09;、三维重建&#xff08;3D Reconstruction&#xff09;、增强现实&#xff08;AR&#xff09;等任务的核心基础。传统方…

【TVM教程】为 NVIDIA GPU 自动调度神经网络

Apache TVM 是一个深度的深度学习编译框架&#xff0c;适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/ 作者&#xff1a;Lianmin Zheng 针对特定设备和工作负载的自动调优对于获得最佳性能至关重要。本文介绍如何使用 auto-sched…

postgresql postgis扩展相关

项目 下载地址 http://rpmfind.net/linux/rpm2html/search.php?queryprotobuf(x86-64) Postgis Index of /postgis/source/ proj4 Index of /proj/ geos Index of /geos/ libxml2 ftp://xmlsoft.org/libxml2/ Index of /sources Json-c Releases json-c/json-c G…

解锁健康密码,拥抱养生生活

在快节奏的现代生活中&#xff0c;健康养生愈发重要&#xff0c;它是我们保持活力、预防疾病、享受美好生活的关键。那究竟如何开启健康养生之旅呢&#xff1f; 合理饮食是养生基石。遵循 “食物多样&#xff0c;谷类为主” 原则&#xff0c;每日摄入谷薯类、蔬菜水果、畜禽鱼蛋…

JavaWeb中的cookie使用

Cookie 1、Cookie是服务端向客户端响应的一小段数据&#xff0c;最终存放在客户端中&#xff1b;之后客户端每次向服务端发送请求&#xff0c;都会在请求头中携带cookie 2、cookie是有时效性的&#xff0c;默认是Session级别&#xff08;整个浏览器关闭才会消失&#xff0c;内存…

el-input实现金额输入

需求&#xff1a;想要实现一个输入金额的el-input&#xff0c;限制只能输入数字和一个小数点。失焦数字转千分位&#xff0c;聚焦转为数字&#xff0c;超过最大值&#xff0c;红字提示 效果图 失焦 聚焦 报错效果 // 组件limitDialog <template><el-dialog:visible.s…

AcWing 蓝桥杯集训·每日一题2025·密接牛追踪2

密接牛追踪2 农夫约翰有 N 头奶牛排成一排&#xff0c;从左到右依次编号为 1∼N。 不幸的是&#xff0c;有一种传染病正在蔓延。 最开始时&#xff0c;只有一部分奶牛受到感染。 每经过一个晚上&#xff0c;受感染的牛就会将病毒传染给它左右两侧的牛&#xff08;如果有的话…

30 分钟从零开始入门 CSS

HTML CSS JS 30分钟从零开始入门拿下 HTML_html教程-CSDN博客 30 分钟从零开始入门 CSS-CSDN博客 JavaScript 指南&#xff1a;从入门到实战开发-CSDN博客 前言 最近也是在复习&#xff0c;把之前没写的博客补起来&#xff0c;之前给大家介绍了 html&#xff0c;现在是 CSS 咯…

LabVIEW图像识别抗干扰分析

问题描述 在基于LabVIEW的探针定位系统中&#xff0c;存在两个核心技术难点&#xff1a; 相机畸变导致初始定位误差&#xff1a;非线性畸变使探针无法通过坐标变换直接精确定位&#xff0c;需采用粗定位图像修正的两段式控制策略。 图像识别可靠性不足&#xff1a;复杂背景&a…

浅显易懂HashMap的数据结构

HashMap 就像一个大仓库&#xff0c;里面有很多小柜子&#xff08;数组&#xff09;&#xff0c;每个小柜子可以挂一串链条&#xff08;链表&#xff09;&#xff0c;链条太长的时候会变成更高级的架子&#xff08;红黑树&#xff09;。下面用超简单的例子解释&#xff1a; ​壹…

drupal如何支持多语言

Drupal 支持多语言的功能强大&#xff0c;可以帮助网站实现多语言内容管理。以下是如何在 Drupal 中配置和启用多语言支持的步骤&#xff1a; 1. 启用多语言模块 首先&#xff0c;您需要确保已启用 Drupal 的相关模块。这些模块包括&#xff1a; Language&#xff08;语言&a…

【HarmonyOS Next】鸿蒙应用折叠屏设备适配方案

【HarmonyOS Next】鸿蒙应用折叠屏设备适配方案 一、前言 目前应用上架华为AGC平台&#xff0c;都会被要求适配折叠屏设备。目前华为系列的折叠屏手机&#xff0c;有华为 Mate系列&#xff08;左右折叠&#xff0c;华为 Mate XT三折叠&#xff09;&#xff0c;华为Pocket 系列…

SE注意力机制详解:从原理到应用,全面解析Squeeze-and-Excitation模块

Squeeze-and-Excitation (SE) 模块的原理与应用 1. 引言&#xff1a;注意力机制的意义 在深度学习领域&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;通过模拟人类视觉的“聚焦”特性&#xff0c;赋予模型动态调整特征重要性的能力。传统卷积神经网络&a…

Python基础大全:Python变量详解

以下是 Python 变量的详细解析&#xff1a; 1. 变量的本质 Python 变量本质上是一个 指向对象的引用&#xff08;类似标签&#xff09;&#xff0c;而不是存储数据的容器。 变量赋值 a 10 时&#xff0c;Python 会创建一个整数对象 10&#xff0c;然后让变量 a 指向这个对象…

减少内存占用的两种方法|torch.no_grad和disable_torch_init

方法区别 在 PyTorch 中&#xff0c;disable_torch_init 和 torch.no_grad() 是两种完全不同的机制&#xff0c;它们的作用和目的不同&#xff0c;以下是它们的区别&#xff1a; 1. disable_torch_init 作用&#xff1a;disable_torch_init 通常用于某些特定的框架或库中&am…

数据挖掘工程师的技术图谱和学习路径

数据挖掘工程师的技术图谱和学习路径: 1.基础知识 数据挖掘工程师是负责从大量数据中发现潜在模式、趋势和规律的专业人士。以下是数据挖掘工程师需要掌握的基础知识: 数据库知识:熟悉关系数据库和非关系数据库的基本概念和操作,掌握SQL语言。 统计学基础:了解统计学的基…

UE5 Computer Shader学习笔记

首先这里是绑定.usf文件的路径&#xff0c;并声明是用声明着色器 上面就是对应的usf文件路径&#xff0c;在第一张图进行链接 Shader Frequency 的作用 Shader Frequency 是 Unreal Engine 中用于描述着色器类型和其执行阶段的分类。常见的 Shader Frequency 包括&#xff1a…