2024-07-19 Unity插件 Odin Inspector9 —— Validation Attributes

文章目录

  • 1 说明
  • 2 验证特性
    • 2.1 AssetsOnly / SceneObjectsOnly
    • 2.2 ChildGameObjectsOnly
    • 2.3 DisallowModificationsIn
    • 2.4 FilePath
    • 2.5 FolderPath
    • 2.6 MaxValue / MinValue
    • 2.7 MinMaxSlider
    • 2.8 PropertyRange
    • 2.9 Required
    • 2.10 RequiredIn
    • 2.11 RequiredListLength
    • 2.12 ValidateInput

1 说明

​ 本文介绍 Odin Inspector 插件中有关验证特性的使用方法。

2 验证特性

2.1 AssetsOnly / SceneObjectsOnly

使目标对象在 Inspector 窗口中只能关联资源 / 场景对象,限制拖拽的资源类型。

image-20240715004717713
// SceneAndAssetsOnlyExamplesComponent.csusing Sirenix.OdinInspector;
using System.Collections.Generic;
using UnityEngine;public class SceneAndAssetsOnlyExamplesComponent : MonoBehaviour
{[Title("Assets only")][AssetsOnly]public List<GameObject> OnlyPrefabs;[AssetsOnly]public GameObject SomePrefab;[AssetsOnly]public Material MaterialAsset;[AssetsOnly]public MeshRenderer SomeMeshRendererOnPrefab;[Title("Scene Objects only")][SceneObjectsOnly]public List<GameObject> OnlySceneObjects;[SceneObjectsOnly]public GameObject SomeSceneObject;[SceneObjectsOnly]public MeshRenderer SomeMeshRenderer;
}

2.2 ChildGameObjectsOnly

可用于 Components 和 GameObject,并在对象旁添加小按钮,点击按钮将显示其子物体中所有满足条件的对象。

  • IncludeSelf = true

    是否包含自身。

  • bool IncludeInactive

    是否包含未激活的子物体。

image-20240718021903335
// ChildGameObjectsOnlyAttributeExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class ChildGameObjectsOnlyAttributeExamplesComponent : MonoBehaviour
{[ChildGameObjectsOnly]public Transform ChildOrSelfTransform;[ChildGameObjectsOnly]public GameObject ChildGameObject;[ChildGameObjectsOnly(IncludeSelf = false)]public Light[] Lights;
}

2.3 DisallowModificationsIn

当该对象所在的脚本挂载在何种预制体上,其修饰的对象将被禁用 / 灰色显示。

  • PrefabKind prefabKind

    预制体的种类。

    1. None

      所有预制体,都不满足条件。

    2. InstanceInScene

      场景中的预制体实例。

    3. InstanceInPrefab

      嵌套在其他预制体中的预制件实例。

    4. Regular

      常规预制体。

    5. Variant

      预制体资产。

    6. NonPrefabInstance

      非预制体或场景中的游戏对象实例。

    7. PrefabInstance = InstanceInPrefab | InstanceInScene

      常规预制体的实例,以及场景中或嵌套在其他预制体中的预制体。

    8. PrefabAsset = Variant | Regular

      常规预制体和预制体资产。

    9. PrefabInstanceAndNonPrefabInstance = PrefabInstance | NonPrefabInstance

      预制体以及非预制实例。

    10. All = PrefabInstanceAndNonPrefabInstance | PrefabAsset

      所有预制体。

image-20240719003134858
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;public class Test : MonoBehaviour
{[DisallowModificationsIn(PrefabKind.PrefabAsset)]public GameObject o;
}

2.4 FilePath

用于字符串,为文件路径提供接口。支持下拉选择文件路径和拖拽文件路径。

  • string ParentFolder

    父路径。可以相对于 Unity 项目,也可以是绝对路径。

  • string Extensions

    文件扩展名列表(以逗号分隔)。扩展名中的 “.” 可不写。

  • bool AbsolutePath

    是否为绝对路径。

  • bool RequireExistingPath

    true:若路径不存在,则显示警告提示。

  • bool UseBackslashes

    是否使用反斜杠(默认使用斜杠)。

image-20240718024034855
// FilePathExamplesComponent.cs
using Sirenix.OdinInspector;
using UnityEngine;public class FilePathExamplesComponent : MonoBehaviour
{// By default, FolderPath provides a path relative to the Unity project.[FilePath]public string UnityProjectPath;// It is possible to provide custom parent path. Parent paths can be relative to the Unity project, or absolute.[FilePath(ParentFolder = "Assets/Plugins/Sirenix")]public string RelativeToParentPath;// Using parent path, FilePath can also provide a path relative to a resources folder.[FilePath(ParentFolder = "Assets/Resources")]public string ResourcePath;// Provide a comma seperated list of allowed extensions. Dots are optional.[FilePath(Extensions = "cs")][BoxGroup("Conditions")]public string ScriptFiles;// By setting AbsolutePath to true, the FilePath will provide an absolute path instead.[FilePath(AbsolutePath = true)][BoxGroup("Conditions")]public string AbsolutePath;// FilePath can also be configured to show an error, if the provided path is invalid.[FilePath(RequireExistingPath = true)][BoxGroup("Conditions")]public string ExistingPath;// By default, FilePath will enforce the use of forward slashes. It can also be configured to use backslashes instead.[FilePath(UseBackslashes = true)][BoxGroup("Conditions")]public string Backslashes;// FilePath also supports member references with the $ symbol.[FilePath(ParentFolder = "$DynamicParent", Extensions = "$DynamicExtensions")][BoxGroup("Member referencing")]public string DynamicFilePath;[BoxGroup("Member referencing")]public string DynamicParent = "Assets/Plugins/Sirenix";[BoxGroup("Member referencing")]public string DynamicExtensions = "cs, unity, jpg";// FilePath also supports lists and arrays.[FilePath(ParentFolder = "Assets/Plugins/Sirenix/Demos/Odin Inspector")][BoxGroup("Lists")]public string[] ListOfFiles;
}

2.5 FolderPath

用于字符串,为目录路径提供接口。支持下拉选择文件夹目录和拖拽文件夹目录。

  • string ParentFolder

    父路径。可以相对于 Unity 项目,也可以是绝对路径。

  • bool AbsolutePath

    是否为绝对路径。

  • bool RequireExistingPath

    true:若路径不存在,则显示警告提示。

  • bool UseBackslashes

    是否使用反斜杠(默认使用斜杠)。

image-20240718024439650
// FolderPathExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class FolderPathExamplesComponent : MonoBehaviour
{// By default, FolderPath provides a path relative to the Unity project.[FolderPath]public string UnityProjectPath;// It is possible to provide custom parent path. Parent paths can be relative to the Unity project, or absolute.[FolderPath(ParentFolder = "Assets/Plugins/Sirenix")]public string RelativeToParentPath;// Using parent path, FolderPath can also provide a path relative to a resources folder.[FolderPath(ParentFolder = "Assets/Resources")]public string ResourcePath;// By setting AbsolutePath to true, the FolderPath will provide an absolute path instead.[FolderPath(AbsolutePath = true)][BoxGroup("Conditions")]public string AbsolutePath;// FolderPath can also be configured to show an error, if the provided path is invalid.[FolderPath(RequireExistingPath = true)][BoxGroup("Conditions")]public string ExistingPath;// By default, FolderPath will enforce the use of forward slashes. It can also be configured to use backslashes instead.[FolderPath(UseBackslashes = true)][BoxGroup("Conditions")]public string Backslashes;// FolderPath also supports member references and attribute expressions with the $ symbol.[FolderPath(ParentFolder = "$DynamicParent")][BoxGroup("Member referencing")]public string DynamicFolderPath;[BoxGroup("Member referencing")]public string DynamicParent = "Assets/Plugins/Sirenix";// FolderPath also supports lists and arrays.[FolderPath(ParentFolder = "Assets/Plugins/Sirenix")][BoxGroup("Lists")]public string[] ListOfFolders;
}

2.6 MaxValue / MinValue

在 Inspector 窗口中对象能够被设置的最小 / 大值。超过该范围则会有错误提示。

  • double maxValue/minValue

    最大 / 小值。

  • string Expression

    用于解析最大 / 小值的字符串。可以是字段、属性、方法名或表达式。

image-20240716045038267
// MinMaxValueValueExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class MinMaxValueValueExamplesComponent : MonoBehaviour
{// Ints[Title("Int")][MinValue(0)]public int IntMinValue0;[MaxValue(0)]public int IntMaxValue0;// Floats[Title("Float")][MinValue(0)]public float FloatMinValue0;[MaxValue(0)]public float FloatMaxValue0;// Vectors[Title("Vectors")][MinValue(0)]public Vector3 Vector3MinValue0;[MaxValue(0)]public Vector3 Vector3MaxValue0;
}

2.7 MinMaxSlider

将 Vector2 向量表示为 [min, max] 区间,并在 Inspector 窗口中以滑动条方式显示。其中,x 为最小值,y 为最大值。

  • float minValue/maxValue

    最小 / 大值。

  • string minValueGetter/maxValueGetter

    获取最小 / 大值的方法名称。

  • string minMaxValueGetter

    获取最小、大值对的方法名称。

  • bool showFields = false

    是否显示对象名称。

image-20240716045759075
// MinMaxSliderExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class MinMaxSliderExamplesComponent : MonoBehaviour
{[MinMaxSlider(-10, 10)]public Vector2 MinMaxValueSlider = new Vector2(-7, -2);[MinMaxSlider(-10, 10, true)]public Vector2 WithFields = new Vector2(-3, 4);[InfoBox("You can also assign the min max values dynamically by referring to members.")][MinMaxSlider("DynamicRange", true)]public Vector2 DynamicMinMax = new Vector2(25, 50);[MinMaxSlider("Min", 10f, true)]public Vector2 DynamicMin = new Vector2(2, 7);[InfoBox("You can also use attribute expressions with the @ symbol.")][MinMaxSlider("@DynamicRange.x", "@DynamicRange.y * 10f", true)]public Vector2 Expressive = new Vector2(0, 450);public Vector2 DynamicRange = new Vector2(0, 50);public float Min { get { return this.DynamicRange.x; } }public float Max { get { return this.DynamicRange.y; } }
}

2.8 PropertyRange

创建滑块控件,将属性的值设置在指定范围之间。

  • double min/max

    最小 / 大值。

  • string minGetter/maxGetter

    获取最小、大值的方法名称。

image-20240716051249151
// PropertyRangeExampleComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class PropertyRangeExampleComponent : MonoBehaviour
{[Range(0, 10)]public int Field = 2;[InfoBox("Odin's PropertyRange attribute is similar to Unity's Range attribute, but also works on properties.")][ShowInInspector, PropertyRange(0, 10)]public int Property { get; set; }[InfoBox("You can also reference member for either or both min and max values.")][PropertyRange(0, "Max"), PropertyOrder(3)]public int Dynamic = 6;[PropertyOrder(4)]public int Max = 100;
}

2.9 Required

如果对象没有被关联,则显示错误信息。

  • string errorMessage

    显示信息。

  • InfoMessageType messageType

    信息类型。

image-20240715005824011
// RequiredExamplesComponent.cs
using Sirenix.OdinInspector;
using UnityEngine;public class RequiredExamplesComponent : MonoBehaviour
{[Required]public GameObject MyGameObject;[Required("Custom error message.")]public Rigidbody MyRigidbody;[InfoBox("Use $ to indicate a member string as message.")][Required("$DynamicMessage")]public GameObject GameObject;public string DynamicMessage = "Dynamic error message";
}

2.10 RequiredIn

当该对象所在的脚本挂载在何种预制体上,其修饰的对象必须被关联,否则显示错误信息。

  • string errorMessage

    显示信息。

  • PrefabKind prefabKind

    预制体的种类。

    1. None

      所有预制体,都不满足条件。

    2. InstanceInScene

      场景中的预制体实例。

    3. InstanceInPrefab

      嵌套在其他预制体中的预制件实例。

    4. Regular

      常规预制体。

    5. Variant

      预制体资产。

    6. NonPrefabInstance

      非预制体或场景中的游戏对象实例。

    7. PrefabInstance = InstanceInPrefab | InstanceInScene

      常规预制体的实例,以及场景中或嵌套在其他预制体中的预制体。

    8. PrefabAsset = Variant | Regular

      常规预制体和预制体资产。

    9. PrefabInstanceAndNonPrefabInstance = PrefabInstance | NonPrefabInstance

      预制体以及非预制实例。

    10. All = PrefabInstanceAndNonPrefabInstance | PrefabAsset

      所有预制体。

image-20240715232923256
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;public class Test : MonoBehaviour
{[RequiredIn(PrefabKind.PrefabAsset)]public GameObject o;
}

2.11 RequiredListLength

将 List 限制为包含指定数量的元素。

  • int minLength/maxLength

    最小 / 大长度。

  • string minLengthGetter/maxLengthGetter

    用于获取集合最小 / 大长度的 C# 表达式,例如“@this.otherList.Count”。

    如果设置了 MinLength,则当 MinLengthGetter 返回 null 时,MinLength 将作为回退。

  • string fixedLengthGetter

    用于获取集合长度的 C# 表达式。

  • PrefabKind PrefabKind

    长度限制应用于哪种预制体上。

image-20240719004053613
// RequiredListLengthExamplesComponent.csusing System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;public class RequiredListLengthExamplesComponent : MonoBehaviour
{[RequiredListLength(10)]public int[] fixedLength;[RequiredListLength(1, null)]public int[] minLength;[RequiredListLength(null, 10, PrefabKind = PrefabKind.InstanceInScene)]public List<int> maxLength;[RequiredListLength(3, 10)]public List<int> minAndMaxLength;public int SomeNumber;[RequiredListLength("@this.SomeNumber")] public List<GameObject> matchLengthOfOther;[RequiredListLength("@this.SomeNumber", null)]public int[] minLengthExpression;[RequiredListLength(null, "@this.SomeNumber")]public List<int> maxLengthExpression;
}

2.12 ValidateInput

允许检查 Inspector 窗口中拖拽关联值是否正确。

  • string condition

    判断是否正确的方法。

  • string defaultMessage

    显示信息。

  • InfoMessageType messageType

    信息类型。

image-20240715011220919
// ValidateInputExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;#if UNITY_EDITOR // Editor namespaces can only be used in the editor.
using Sirenix.OdinInspector.Editor.Examples;
#endifpublic class ValidateInputExamplesComponent : MonoBehaviour
{
#if UNITY_EDITOR // MyScriptyScriptableObject is an example type and only exists in the editor[HideLabel][Title("Default message", "You can just provide a default message that is always used")][ValidateInput("MustBeNull", "This field should be null.")]public MyScriptyScriptableObject DefaultMessage;
#endif[Space(12), HideLabel][Title("Dynamic message", "Or the validation method can dynamically provide a custom message")][ValidateInput("HasMeshRendererDynamicMessage", "Prefab must have a MeshRenderer component")]public GameObject DynamicMessage;[Space(12), HideLabel][Title("Dynamic message type", "The validation method can also control the type of the message")][ValidateInput("HasMeshRendererDynamicMessageAndType", "Prefab must have a MeshRenderer component")]public GameObject DynamicMessageAndType;[Space(8), HideLabel][InfoBox("Change GameObject value to update message type", InfoMessageType.None)]public InfoMessageType MessageType;[Space(12), HideLabel][Title("Dynamic default message", "Use $ to indicate a member string as default message")][ValidateInput("AlwaysFalse", "$Message", InfoMessageType.Warning)]public string Message = "Dynamic ValidateInput message";#if UNITY_EDITOR // Editor-related code must be excluded from buildsprivate bool AlwaysFalse(string value) {return false;}private bool MustBeNull(MyScriptyScriptableObject scripty) {return scripty == null;}private bool HasMeshRendererDefaultMessage(GameObject gameObject) {if (gameObject == null) return true;return gameObject.GetComponentInChildren<MeshRenderer>() != null;}private bool HasMeshRendererDynamicMessage(GameObject gameObject, ref string errorMessage) {if (gameObject == null) return true;if (gameObject.GetComponentInChildren<MeshRenderer>() == null) {// If errorMessage is left as null, the default error message from the attribute will be usederrorMessage = "\"" + gameObject.name + "\" must have a MeshRenderer component";return false;}return true;}private bool HasMeshRendererDynamicMessageAndType(GameObject gameObject, ref string errorMessage, ref InfoMessageType? messageType) {if (gameObject == null) return true;if (gameObject.GetComponentInChildren<MeshRenderer>() == null) {// If errorMessage is left as null, the default error message from the attribute will be usederrorMessage = "\"" + gameObject.name + "\" should have a MeshRenderer component";// If messageType is left as null, the default message type from the attribute will be usedmessageType = this.MessageType;return false;}return true;}
#endif
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改

JAVA&#xff1a;Filer过滤器 介绍 Java中的Filter也被称为过滤器&#xff0c;它是Servlet技术的一部分&#xff0c;用于在web服务器上拦截请求和响应&#xff0c;以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求&#xff0c;也可以利用Filter对访问请求…

鸿蒙语言基础类库:【@system.sensor (传感器)】

传感器 说明&#xff1a; 从API Version 8开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.sensor]。本模块首批接口从API version 4开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。该功能使用需要对应硬件支持&#xff0c;仅支持…

地图项目涉及知识点总结

序&#xff1a;最近做了一个在地图上标记点的项目&#xff0c;用户要求是在地图上显示百万量级的标记点&#xff0c;并且地图仍要可用&#xff08;能拖拽&#xff0c;能缩放&#xff09;。调研了不少方法和方案&#xff0c;最终实现了相对流畅的地图系统&#xff0c;加载耗时用…

2024可信数据库发展大会:TDengine CEO 陶建辉谈“做难而正确的事情”

在当前数字经济快速发展的背景下&#xff0c;可信数据库技术日益成为各行业信息化建设的关键支撑点。金融、电信、能源和政务等领域对数据处理和管理的需求不断增加&#xff0c;推动了数据库技术的创新与进步。与此同时&#xff0c;人工智能与数据库的深度融合、搜索与分析型数…

【Git】(基础篇四)—— GitHub使用

GitHub使用 经过上一篇的文章&#xff0c;相信大家已经对git的基本操作熟悉了&#xff0c;但哪些使用git的方法只是在本地仓库进行&#xff0c;本文介绍如何使用git和远程仓库进行连接使用。 Github和Gitee 主要用到的两个远程仓库在线平台是github和gitee GitHub GitHub …

Adobe XD中文设置指南:专业设计师的现场解答

Adobe XD是世界领先的在线合作UI设计工具。它摆脱了Sketch、Figma等传统设计软件对设备的依赖&#xff0c;使设计师可以随时随地使用任何设备打开网页浏览器&#xff0c;轻松实现跨平台、跨时空的设计合作。然后&#xff0c;为了提高国内设计师的使用体验&#xff0c;Adobe XD如…

2024-07-18 Unity插件 Odin Inspector8 —— Type Specific Attributes

文章目录 1 说明2 特定类型特性2.1 AssetList2.2 AssetSelector2.3 ChildGameObjectsOnly2.4 ColorPalette2.5 DisplayAsString2.6 EnumPaging2.7 EnumToggleButtons2.8 FilePath2.9 FolderPath2.10 HideInInlineEditors2.11 HideInTables2.12 HideMonoScript2.13 HideReferenc…

DP(6) | 完全背包 | Java | LeetCode 322, 179, 139 做题总结

322. 零钱兑换 我的错误答案 class Solution {public int coinChange(int[] coins, int amount) {int[][]dp new int [coins.length][amount1];for(int j0; j<amount; j) {if(coins[0] j){dp[0][coins[0]] 1;}}for(int i1; i<coins.length; i) {for(int j0; j<am…

带时间窗车辆路径问题丨论文复现:改进粒子群算法求解

路径优化相关文章 1、路径优化历史文章2、路径优化丨带时间窗和载重约束的CVRPTW问题-改进遗传算法&#xff1a;算例RC1083、路径优化丨带时间窗和载重约束的CVRPTW问题-改进和声搜索算法&#xff1a;算例RC1084、路径优化丨复现论文-网约拼车出行的乘客车辆匹配及路径优化5、…

[C/C++入门][进制原理]27、计算机种的进制

各种信息进入计算机&#xff0c;都要转换成“0”和“1”的二进制形式。 计算机 采用二进制的原因是&#xff1a; 物理上容易实现&#xff0c;可靠性高。&#xff08;电子元件的通电和不通电就可以表示1和0&#xff0c;所以非常方便&#xff09;运算简单&#xff0c;通用性强。…

ELK日志分析系统部署文档

一、ELK说明 ELK是Elasticsearch&#xff08;ES&#xff09; Logstash Kibana 这三个开源工具组成&#xff0c;官方网站: The Elastic Search AI Platform — Drive real-time insights | Elastic 简单的ELK架构 ES: 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它…

Java 网络编程(TCP编程 和 UDP编程)

1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09; 文章目录 1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09;2. 网络编程的概念3. IP 地址3.1 IP地址相关的&#xff1a;域名与DNS 4. 端口号&#xff08;port&#xff09;5. 通信协议5.1 通信协议相关的…

如何免费用java c#实现手机在网状态查询

今天分享手机在网状态查询接口&#xff0c;该接口适用的场景非常广泛&#xff01;首先我们先讲下什么是手机在网状态&#xff1f;简单来说&#xff0c;就是你得手机号是否还在正常使用中&#xff0c;是否能够及时接收和回复信息&#xff0c;是否能够随时接听和拨打电话。如果你…

小白新手搭建个人网盘

小白新手搭建个人网盘 序云服务器ECS重置密码远程连接ECS实例 安装OwnCloud安装Apache服务PHP运行环境NAS挂载挂载验证操作体验 序 阿里云文件存储NAS&#xff08;Apsara File Storage NAS&#xff09;是一个可大规模共享访问&#xff0c;弹性扩展的分布式文件系统。本文主要是…

Python面试宝典第15题:岛屿数量

题目 在二维网格地图上&#xff0c;1 表示陆地&#xff0c;0 表示水域。如果相邻的陆地可以水平或垂直连接&#xff0c;则它们属于同一块岛屿。请进行编码&#xff0c;统计地图上的岛屿数量。比如&#xff1a;下面的二维网格地图&#xff0c;其岛屿数量为3。 基础知识 解决这类…

简约的悬浮动态特效404单页源HTML码

源码介绍 简约的悬浮动态特效404单页源HTML码,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head><meta charset="utf-8&q…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

组队学习——支持向量机

本次学习支持向量机部分数据如下所示 IDmasswidthheightcolor_scorefruit_namekind 其中ID&#xff1a;1-59是对应训练集和验证集的数据&#xff0c;60-67是对应测试集的数据&#xff0c;其中水果类别一共有四类包括apple、lemon、orange、mandarin。要求根据1-59的数据集的自…

Day16_集合与迭代器

Day16-集合 Day16 集合与迭代器1.1 集合的概念 集合继承图1.2 Collection接口1、添加元素2、删除元素3、查询与获取元素不过当我们实际使用都是使用的他的子类Arraylist&#xff01;&#xff01;&#xff01; 1.3 API演示1、演示添加2、演示删除3、演示查询与获取元素 2 Iterat…

[数据分析]脑图像处理工具

###############ATTENTION&#xff01;############### 非常需要注意软件适配的操作系统&#xff01;有些仅适用于Linux&#xff0c;可以点进各自软件手册查看详情。 需要自行查看支持的影像模态。 代码库和软件我没有加以区分。 不是专门预处理的博客&#xff01;&#xf…