2024-07-19 Unity插件 Odin Inspector10 —— Misc Attributes

文章目录

  • 1 说明
  • 2 其他特性
    • 2.1 CustomContextMenu
    • 2.2 DisableContextMenu
    • 2.3 DrawWithUnity
    • 2.4 HideDuplicateReferenceBox
    • 2.5 Indent
    • 2.6 InfoBox
    • 2.7 InlineProperty
    • 2.8 LabelText
    • 2.9 LabelWidth
    • 2.10 OnCollectionChanged
    • 2.11 OnInspectorDispose
    • 2.12 OnInspectorGUI
    • 2.13 OnInspectorInit
    • 2.14 OnStateUpdate
    • 2.15 OnValueChanged
    • 2.16 TypeSelectorSettings
    • 2.17 TypeRegistryItem
    • 2.18 PropertyTooltip
    • 2.19 SuffixLabel

1 说明

​ 本文介绍 Odin Inspector 插件中其他特性的使用方法。

2 其他特性

2.1 CustomContextMenu

为对象的上下文菜单(右键该对象展开)添加自定义选项,当前不支持静态方法。

  • string menuItem

    菜单栏(“/ ”分隔子菜单)。

  • string action

    单击上下文菜单时要采取的操作方法名。

image-20240719134925070
// CustomContextMenuExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class CustomContextMenuExamplesComponent : MonoBehaviour
{[InfoBox("A custom context menu is added on this property. Right click the property to view the custom context menu.")][CustomContextMenu("Say Hello/Twice", "SayHello")]public int MyProperty;private void SayHello() {Debug.Log("Hello Twice");}
}

2.2 DisableContextMenu

禁用 Odin 提供的所有右键单击上下文菜单,不会禁用 Unity 的上下文菜单。

  • bool disableForMember = true

    是否禁用成员本身的上下文菜单。

  • bool disableCollectionElements = false

    是否同时禁用集合元素的上下文菜单。

image-20240719174820302
// DisableContextMenuExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class DisableContextMenuExamplesComponent : MonoBehaviour
{[InfoBox("DisableContextMenu disables all right-click context menus provided by Odin. It does not disable Unity's context menu.", InfoMessageType.Warning)][DisableContextMenu]public int[] NoRightClickList = new int[] { 2, 3, 5 };[DisableContextMenu(disableForMember: false, disableCollectionElements: true)]public int[] NoRightClickListOnListElements = new int[] { 7, 11 };[DisableContextMenu(disableForMember: true, disableCollectionElements: true)]public int[] DisableRightClickCompletely = new int[] { 13, 17 };[DisableContextMenu]public int NoRightClickField = 19;
}

2.3 DrawWithUnity

禁用特定成员的 Odin 绘图,而使用 Unity 的旧绘图系统进行绘制。
注意:

  1. 此特性并不意味着“完全禁用对象的 Odin”;本质上只是调用 Unity 的旧属性绘图系统,Odin 仍然最终负责安排对象的绘制。
  2. 其他特性的优先级高于此特性。
  3. 如果存在另一个特性来覆盖此特性,则不能保证会调用 Unity 绘制属性。
image-20240719175016445
// DrawWithUnityExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class DrawWithUnityExamplesComponent : MonoBehaviour
{[InfoBox("If you ever experience trouble with one of Odin's attributes, there is a good chance that DrawWithUnity will come in handy; it will make Odin draw the value as Unity normally would.")]public GameObject ObjectDrawnWithOdin;[DrawWithUnity]public GameObject ObjectDrawnWithUnity;
}

2.4 HideDuplicateReferenceBox

如果由于遇到重复的引用值,而使此属性以其他方式绘制为对另一个属性的引用,则 Odin 将隐藏引用框。

注意:如果该值递归引用自身,则无论在所有递归绘制调用中是否使用此属性,都会绘制引用框。

image-20240719175723882
// HideDuplicateReferenceBoxExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;#if UNITY_EDITOR // Editor namespaces can only be used in the editor.
using Sirenix.Utilities.Editor;
#endifpublic class HideDuplicateReferenceBoxExamplesComponent : SerializedMonoBehaviour
{[PropertyOrder(1)]public ReferenceTypeClass firstObject;[PropertyOrder(3)]public ReferenceTypeClass withReferenceBox;[PropertyOrder(5)][HideDuplicateReferenceBox]public ReferenceTypeClass withoutReferenceBox;[OnInspectorInit]public void CreateData() {this.firstObject                    = new ReferenceTypeClass();this.withReferenceBox               = this.firstObject;this.withoutReferenceBox            = this.firstObject;this.firstObject.recursiveReference = this.firstObject;}public class ReferenceTypeClass{[HideDuplicateReferenceBox]public ReferenceTypeClass recursiveReference;#if UNITY_EDITOR // Editor-related code must be excluded from builds[OnInspectorGUI, PropertyOrder(-1)]private void MessageBox() {SirenixEditorGUI.WarningMessageBox("Recursively drawn references will always show the reference box regardless, to prevent infinite depth draw loops.");}
#endif}#if UNITY_EDITOR // Editor-related code must be excluded from builds[OnInspectorGUI, PropertyOrder(0)]private void MessageBox1() {SirenixEditorGUI.Title("The first reference will always be drawn normally", null, TextAlignment.Left, true);}[OnInspectorGUI, PropertyOrder(2)]private void MessageBox2() {GUILayout.Space(20);SirenixEditorGUI.Title("All subsequent references will be wrapped in a reference box", null, TextAlignment.Left, true);}[OnInspectorGUI, PropertyOrder(4)]private void MessageBox3() {GUILayout.Space(20);SirenixEditorGUI.Title("With the [HideDuplicateReferenceBox] attribute, this box is hidden", null, TextAlignment.Left, true);}
#endif
}

2.5 Indent

将对象标签向右缩进。

  • int indentLevel = 1

    缩进大小。

image-20240719180122436
// IndentExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class IndentExamplesComponent : MonoBehaviour
{[Title("Nicely organize your properties.")][Indent]public int A;[Indent(2)]public int B;[Indent(3)]public int C;[Indent(4)]public int D;[Title("Using the Indent attribute")][Indent]public int E;[Indent(0)]public int F;[Indent(-1)]public int G;
}

2.6 InfoBox

在对象上方显示文本框以注释或警告。

  • string message

    消息内容。

  • SdfIconType icon

    图标。

  • string visibleIfMemberName = null

    用于显示或隐藏消息框的 bool 成员名称。

  • InfoMessageType infoMessageType = InfoMessageType.Info

    消息类型。

image-20240719180445061
// InfoBoxExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class InfoBoxExamplesComponent : MonoBehaviour
{[Title("InfoBox message types")][InfoBox("Default info box.")]public int A;[InfoBox("Warning info box.", InfoMessageType.Warning)]public int B;[InfoBox("Error info box.", InfoMessageType.Error)]public int C;[InfoBox("Info box without an icon.", InfoMessageType.None)]public int D;[Title("Conditional info boxes")]public bool ToggleInfoBoxes;[InfoBox("This info box is only shown while in editor mode.", InfoMessageType.Error, "IsInEditMode")]public float G;[InfoBox("This info box is hideable by a static field.", "ToggleInfoBoxes")]public float E;[InfoBox("This info box is hideable by a static field.", "ToggleInfoBoxes")]public float F;[Title("Info box member reference and attribute expressions")][InfoBox("$InfoBoxMessage")][InfoBox("@\"Time: \" + DateTime.Now.ToString(\"HH:mm:ss\")")]public string InfoBoxMessage = "My dynamic info box message";private static bool IsInEditMode() {return !Application.isPlaying;}
}

2.7 InlineProperty

将类型的内容显示在标签旁,而不是以折叠方式呈现。

  • int LabelWidth

    为所有子属性指定标签宽度。

image-20240719180831062
// InlinePropertyExamplesComponent.csusing Sirenix.OdinInspector;
using System;
using UnityEngine;public class InlinePropertyExamplesComponent : MonoBehaviour
{public Vector3 Vector3;public Vector3Int MyVector3Int;[InlineProperty(LabelWidth = 13)]public Vector2Int MyVector2Int;[Serializable][InlineProperty(LabelWidth = 13)]public struct Vector3Int{[HorizontalGroup]public int X;[HorizontalGroup]public int Y;[HorizontalGroup]public int Z;}[Serializable]public struct Vector2Int{[HorizontalGroup]public int X;[HorizontalGroup]public int Y;}
}

2.8 LabelText

更改对象在 Inspector 窗口中显示的标签内容。

  • string text

    标签内容。

  • SdfIconType icon

    图标。

image-20240719181116242
// LabelTextExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class LabelTextExamplesComponent : MonoBehaviour
{[LabelText("1")]public int MyInt1 = 1;[LabelText("2")]public int MyInt2 = 12;[LabelText("3")]public int MyInt3 = 123;[InfoBox("Use $ to refer to a member string.")][LabelText("$MyInt3")]public string LabelText = "The label is taken from the number 3 above";[InfoBox("Use @ to execute an expression.")][LabelText("@DateTime.Now.ToString(\"HH:mm:ss\")")]public string DateTimeLabel;[LabelText("Test", SdfIconType.HeartFill)]public int LabelIcon1 = 123;[LabelText("", SdfIconType.HeartFill)]public int LabelIcon2 = 123;
}

2.9 LabelWidth

指定标签绘制的宽度。

  • float width

    宽度。

image-20240719181513829
// LabelWidthExampleComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class LabelWidthExampleComponent : MonoBehaviour
{public int DefaultWidth;[LabelWidth(50)]public int Thin;[LabelWidth(250)]public int Wide;
}

2.10 OnCollectionChanged

通过 Inspector 窗口更改集合时,触发指定事件回调。

适用于具有集合解析器的集合,包括数组、列表、字典、哈希集、堆栈和链表。

注意:此特性仅在编辑器中有效!由脚本更改的集合不会触发回调事件!

  • string before/after

    更改前 / 后触发的事件回调。

image-20240719181829143
// OnCollectionChangedExamplesComponent.csusing Sirenix.OdinInspector;
using System.Collections.Generic;
using UnityEngine;#if UNITY_EDITOR // Editor namespaces can only be used in the editor.
using Sirenix.OdinInspector.Editor;
#endifpublic class OnCollectionChangedExamplesComponent : SerializedMonoBehaviour
{[InfoBox("Change the collection to get callbacks detailing the changes that are being made.")][OnCollectionChanged("Before", "After")]public List<string> list = new List<string>() { "str1", "str2", "str3" };[OnCollectionChanged("Before", "After")]public HashSet<string> hashset = new HashSet<string>() { "str1", "str2", "str3" };[OnCollectionChanged("Before", "After")]public Dictionary<string, string> dictionary = new Dictionary<string, string>() { { "key1", "str1" }, { "key2", "str2" }, { "key3", "str3" } };#if UNITY_EDITOR // Editor-related code must be excluded from buildspublic void Before(CollectionChangeInfo info, object value) {Debug.Log("Received callback BEFORE CHANGE with the following info: " + info + ", and the following collection instance: " + value);}public void After(CollectionChangeInfo info, object value) {Debug.Log("Received callback AFTER CHANGE with the following info: " + info + ", and the following collection instance: " + value);}
#endif
}

2.11 OnInspectorDispose

对象在 Inspector 窗口中被释放时(更改对象或 Inspector 窗口被隐藏 / 关闭)执行回调。

  • string action

    要调用的方法名称,或要执行的表达式。

image-20240719183127075
// OnInspectorDisposeExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class OnInspectorDisposeExamplesComponent : MonoBehaviour
{[OnInspectorDispose("@UnityEngine.Debug.Log(\"Dispose event invoked!\")")][ShowInInspector, InfoBox("When you change the type of this field, or set it to null, the former property setup is disposed. The property setup will also be disposed when you deselect this example."), DisplayAsString]public BaseClass PolymorphicField;public abstract class BaseClass { public override string ToString() { return this.GetType().Name; } }public class A : BaseClass { }public class B : BaseClass { }public class C : BaseClass { }
}

2.12 OnInspectorGUI

在 Inpsector 代码运行时调用指定方法。使用此选项为对象添加自定义 Inspector GUI。

  • string action

    添加的绘制方法。

image-20240719183246119
// OnInspectorGUIExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class OnInspectorGUIExamplesComponent : MonoBehaviour
{[OnInspectorInit("@Texture = Sirenix.Utilities.Editor.EditorIcons.OdinInspectorLogo")][OnInspectorGUI("DrawPreview", append: true)]public Texture2D Texture;private void DrawPreview() {if (this.Texture == null) return;GUILayout.BeginVertical(GUI.skin.box);GUILayout.Label(this.Texture);GUILayout.EndVertical();}#if UNITY_EDITOR // Editor-related code must be excluded from builds[OnInspectorGUI]private void OnInspectorGUI() {UnityEditor.EditorGUILayout.HelpBox("OnInspectorGUI can also be used on both methods and properties", UnityEditor.MessageType.Info);}
#endif
}

2.13 OnInspectorInit

对象在 Inspector 窗口中被初始化时(打开 / 显示 Inspector 窗口)执行回调。

  • string action

    要调用的方法名称,或要执行的表达式。

image-20240719183806323
// OnInspectorInitExamplesComponent.csusing Sirenix.OdinInspector;
using System;
using UnityEngine;#if UNITY_EDITOR // Editor namespaces can only be used in the editor.
using Sirenix.Utilities.Editor;
#endifpublic class OnInspectorInitExamplesComponent : MonoBehaviour
{// Display current time for reference.[ShowInInspector, DisplayAsString, PropertyOrder(-1)]public string CurrentTime {get {
#if UNITY_EDITOR // Editor-related code must be excluded from buildsGUIHelper.RequestRepaint();
#endifreturn DateTime.Now.ToString();}}// OnInspectorInit executes the first time this string is about to be drawn in the inspector.// It will execute again when the example is reselected.[OnInspectorInit("@TimeWhenExampleWasOpened = DateTime.Now.ToString()")]public string TimeWhenExampleWasOpened;// OnInspectorInit will not execute before the property is actually "resolved" in the inspector.// Remember, Odin's property system is lazily evaluated, and so a property does not actually exist// and is not initialized before something is actually asking for it.// // Therefore, this OnInspectorInit attribute won't execute until the foldout is expanded.[FoldoutGroup("Delayed Initialization", Expanded = false, HideWhenChildrenAreInvisible = false)][OnInspectorInit("@TimeFoldoutWasOpened = DateTime.Now.ToString()")]public string TimeFoldoutWasOpened;
}

2.14 OnStateUpdate

在 Inspector 窗口中每帧监听对象的状态。

通常每帧至少发生一次监听,即使对象不可见时也会。

  • string action

    监听执行的方法。

image-20240719213837378
// AnotherPropertysStateExampleComponent.csusing Sirenix.OdinInspector;
using System.Collections.Generic;
using UnityEngine;public class AnotherPropertysStateExampleComponent : MonoBehaviour
{public List<string> list;[OnStateUpdate("@#(list).State.Expanded = $value")]public bool ExpandList;
}

2.15 OnValueChanged

适用于属性和字段,每当通过 Inspector 窗口更改对象时,都会调用指定的函数。

注意:此特性仅在编辑器中有效!通过脚本更改的属性不会调用该函数。

image-20240719215847452
// OnValueChangedExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class OnValueChangedExamplesComponent : MonoBehaviour
{[OnValueChanged("CreateMaterial")]public Shader Shader;[ReadOnly, InlineEditor(InlineEditorModes.LargePreview)]public Material Material;private void CreateMaterial() {if (this.Material != null) {Material.DestroyImmediate(this.Material);}if (this.Shader != null) {this.Material = new Material(this.Shader);}}
}

2.16 TypeSelectorSettings

提供 Type 类型的绘制选择器。

  • bool ShowCategories

    下拉选择 Type 时是否分类显示可选项。

  • bool PreferNamespaces

    是否依据命名空间显示分类。默认依据程序集名称分类。

  • bool ShowNoneItem

    是否显示 “None”。

  • string FilterTypesFunction

    用于过滤类型选择器中显示的类型的函数。

image-20240719221035793
// TypeSelectorSettingsExampleComponent.csusing System;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;public class TypeSelectorSettingsExampleComponent : MonoBehaviour
{[ShowInInspector]public Type Default;[Title("Show Categories"), ShowInInspector, LabelText("On")][TypeSelectorSettings(ShowCategories = true)]public Type ShowCategories_On;[ShowInInspector, LabelText("Off")][TypeSelectorSettings(ShowCategories = false)]public Type ShowCategories_Off;[Title("Prefer Namespaces"), ShowInInspector, LabelText("On")][TypeSelectorSettings(PreferNamespaces = true, ShowCategories = true)]public Type PreferNamespaces_On;[ShowInInspector, LabelText("Off")][TypeSelectorSettings(PreferNamespaces = false, ShowCategories = true)]public Type PreferNamespaces_Off;[Title("Show None Item"), ShowInInspector, LabelText("On")][TypeSelectorSettings(ShowNoneItem = true)]public Type ShowNoneItem_On;[ShowInInspector, LabelText("Off")][TypeSelectorSettings(ShowNoneItem = false)]public Type ShowNoneItem_Off;[Title("Custom Type Filter"), ShowInInspector][TypeSelectorSettings(FilterTypesFunction = nameof(TypeFilter), ShowCategories = false)]public Type CustomTypeFilterExample;private bool TypeFilter(Type type) {return type.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEnumerable<>));}
}

2.17 TypeRegistryItem

为类型注册 Inspector 窗口的显示器。

  • string Name = null

    显示名称。

  • string CategoryPath = null

    分类路径。

  • SdfIconType Icon = SdfIconType.None

    左侧图标。

  • float lightIconColorR/G/B/A = 0.0f

    在浅色模式下图标颜色的 RGBA 分量。

  • float darkIconColorR/G/B/A = 0.0f

    在深色模式下图标颜色的 RGBA 分量。

  • int Priority = 0

    显示优先级。

image-20240719221334683
// TypeRegistryItemSettingsExampleComponent.csusing System;
using Sirenix.OdinInspector;
using UnityEngine;public class TypeRegistryItemSettingsExampleComponent : MonoBehaviour
{private const string CATEGORY_PATH  = "Sirenix.TypeSelector.Demo";private const string BASE_ITEM_NAME = "Painting Tools";private const string PATH           = CATEGORY_PATH + "/" + BASE_ITEM_NAME;[TypeRegistryItem(Name = BASE_ITEM_NAME, Icon = SdfIconType.Tools, CategoryPath = CATEGORY_PATH, Priority = Int32.MinValue)]public abstract class Base{ }[TypeRegistryItem(darkIconColorR: 0.8f, darkIconColorG: 0.3f,lightIconColorR: 0.3f, lightIconColorG: 0.1f,Name = "Brush", CategoryPath = PATH, Icon = SdfIconType.BrushFill, Priority = Int32.MinValue)]public class InheritorA : Base{public Color Color          = Color.red;public float PaintRemaining = 0.4f;}[TypeRegistryItem(darkIconColorG: 0.8f, darkIconColorB: 0.3f,lightIconColorG: 0.3f, lightIconColorB: 0.1f,Name = "Paint Bucket", CategoryPath = PATH, Icon = SdfIconType.PaintBucket, Priority = Int32.MinValue)]public class InheritorB : Base{public Color Color          = Color.green;public float PaintRemaining = 0.8f;}[TypeRegistryItem(darkIconColorB: 0.8f, darkIconColorG: 0.3f,lightIconColorB: 0.3f, lightIconColorG: 0.1f,Name = "Palette", CategoryPath = PATH, Icon = SdfIconType.PaletteFill, Priority = Int32.MinValue)]public class InheritorC : Base{public ColorPaletteItem[] Colors = {new ColorPaletteItem(Color.blue, 0.8f),new ColorPaletteItem(Color.red, 0.5f),new ColorPaletteItem(Color.green, 1.0f),new ColorPaletteItem(Color.white, 0.6f),};}[ShowInInspector][PolymorphicDrawerSettings(ShowBaseType = false)][InlineProperty]public Base PaintingItem;public struct ColorPaletteItem{public Color Color;public float Remaining;public ColorPaletteItem(Color color, float remaining) {this.Color     = color;this.Remaining = remaining;}}
}

2.18 PropertyTooltip

在 Inspector 窗口中鼠标悬停在对象上时创建工具提示。

注意:类似于 Unity 的 TooltipAttribute,但可以应用于属性。

  • string tooltip

    悬停提示。

image-20240719222622476
// PropertyTooltipExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class PropertyTooltipExamplesComponent : MonoBehaviour
{[PropertyTooltip("This is tooltip on an int property.")]public int MyInt;[InfoBox("Use $ to refer to a member string.")][PropertyTooltip("$Tooltip")]public string Tooltip = "Dynamic tooltip.";[Button, PropertyTooltip("Button Tooltip")]private void ButtonWithTooltip() {// ...}
}

2.19 SuffixLabel

在对象末尾绘制后缀标签,用于传达对象的数值含义。

  • string label

    后缀标签名。

  • SdfIconType icon

    图标。

  • bool overlay = false

    后缀标签将绘制在对象值的内部,而不是外面。

  • string IconColor

    图标颜色。

image-20240719223010091
// SuffixLabelExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class SuffixLabelExamplesComponent : MonoBehaviour
{[SuffixLabel("Prefab")]public GameObject GameObject;[Space(15)][InfoBox("Using the Overlay property, the suffix label will be drawn on top of the property instead of behind it.\n" +"Use this for a neat inline look.")][SuffixLabel("ms", Overlay = true)]public float Speed;[SuffixLabel("radians", Overlay = true)]public float Angle;[Space(15)][InfoBox("The Suffix attribute also supports referencing a member string field, property, or method by using $.")][SuffixLabel("$Suffix", Overlay = true)]public string Suffix = "Dynamic suffix label";[InfoBox("The Suffix attribute also supports expressions by using @.")][SuffixLabel("@DateTime.Now.ToString(\"HH:mm:ss\")", true)]public string Expression;[SuffixLabel("Suffix with icon", SdfIconType.HeartFill)]public string IconAndText1;[SuffixLabel(SdfIconType.HeartFill)]public string OnlyIcon1;[SuffixLabel("Suffix with icon", SdfIconType.HeartFill, Overlay = true)]public string IconAndText2;[SuffixLabel(SdfIconType.HeartFill, Overlay = true)]public string OnlyIcon2;
}

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

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

相关文章

高数知识补充----矩阵、行列式、数学符号

矩阵计算 参考链接&#xff1a;矩阵如何运算&#xff1f;——线性代数_矩阵计算-CSDN博客 行列式计算 参考链接&#xff1a;实用的行列式计算方法 —— 线性代数&#xff08;det&#xff09;_det线性代数-CSDN博客 参考链接&#xff1a;行列式的计算方法(含四种&#xff0c;…

08.固定宽高比 图片加载失败时的回退方案 隐藏滚动条

### 固定宽高比 确保具有可变 width 的元素将保持与其 `height 成比例的值。 在 ::before 伪元素上应用 padding-top,使元素的 height 等于其 width 的百分比。height 与 width 的比例可以根据需要进行调整。例如,padding-top 为 100% 将创建一个响应式正方形(1:1 比例)。<…

<数据集>钢铁缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1800张 标注数量(xml文件个数)&#xff1a;1800 标注数量(txt文件个数)&#xff1a;1800 标注类别数&#xff1a;6 标注类别名称&#xff1a;[crazing, patches, inclusion, pitted_surface, rolled-in_scale, scr…

<数据集>铁轨缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;844张 标注数量(xml文件个数)&#xff1a;844 标注数量(txt文件个数)&#xff1a;844 标注类别数&#xff1a;3 标注类别名称&#xff1a;[Spalling, Squat, Wheel Burn] 序号类别名称图片数框数1Spalling3315522…

前端组件化技术实践:Vue自定义顶部导航栏组件的探索

摘要 随着前端技术的飞速发展&#xff0c;组件化开发已成为提高开发效率、降低维护成本的关键手段。本文将以Vue自定义顶部导航栏组件为例&#xff0c;深入探讨前端组件化开发的实践过程、优势以及面临的挑战&#xff0c;旨在为广大前端开发者提供有价值的参考和启示。 一、引…

安全防御2

实验要求&#xff1a; 实验过程&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换)&#xff1a; 新建电信区&#xff1a; 新建移动区&#xff1a; 将对应接口划归到各自区域&#xff1a; 新建…

5.java操作RabbitMQ-简单队列

1.引入依赖 <!--rabbitmq依赖客户端--> <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId> </dependency> 操作文件的依赖 <!--操作文件流的一个依赖--> <dependency><groupId>c…

前端表格解析方法

工具类文件 // fileUtils.tsimport { ref } from vue; import * as xlsx from xlsx;interface RowData {[key: string]: any; }export const tableData ref<RowData[]>([]);export async function handleFileSelect(url: string): Promise<void> {try {const res…

数字通云平台 智慧政务OA PayslipUser SQL注入漏洞复现

0x01 产品简介 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术,为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平,推动电子政务向更高层次发展。 0x02 漏洞概述 数字通云平台 智慧政务OA Paysli…

使用shedlock实现分布式互斥执行

前言 前序章节&#xff1a;springboot基础(82):分布式定时任务解决方案shedlock 如果你不清楚shedlock&#xff0c;建议先阅读前序章节&#xff0c;再来查看本文。 如果我们不在spring环境下&#xff0c;如何使用shedlock实现分布式互斥执行&#xff1f; 我们可以使用shedl…

verilog实现ram16*8 (vivado)

module ram_16x2 (input clk, // 时钟信号input we, // 写使能input en, // 使能信号input [3:0] addr, // 地址线input [1:0] datain, // 输入数据线output reg [1:0] dataout // 输出数据线 );// 定义存储器数组reg [1:0] mem [15:0];always (posedge…

知迪科技发布了全新软件产品

近日&#xff0c;知迪科技发布了全新软件产品——Vehicle Bus Tool-Trace Version免费版。该软件产品能高效的离线分析汽车总线数据&#xff0c;并拥有一大亮点功能&#xff1a;Ethernet通信离线文件基于ARXML文件的信号级解析&#xff0c;具体操作如下&#xff1a; 1、新建一…

达梦数据库 MPP集群搭建(带主备)

MPP集群搭建&#xff08;带主备&#xff09; 1.背景2.操作内容和要求3. 具体步骤3.1 搭建过程3.1.1 集群搭建3.1.2 准备工作3.1.2.1 初始化3.1.2.2 备份数据库 3.1.3 配置主库EP013.1.3.1 配置dm.ini3.1.3.2 配置dmmal.ini3.1.3.3 配置dmarch.ini3.1.3.4 配置dmmpp.ctl3.1.3.5 …

PHP基础语法(一)

一、初步语法 1、PHP代码标记&#xff1a;以 <?php 开始&#xff0c;以 ?> 结束&#xff1b; 2、PHP注释&#xff1a;行注释&#xff1a;//&#xff08;双斜杠&#xff09;或# 块注释&#xff1a;/* */ 3、PHP语句分隔符&#xff1a; 1&#xff09;在PHP中&#…

Golang|Shopee一面

1、一个有环的链表&#xff0c;如何确认链表有环&#xff0c;环的长度。 LeetCode 142。原题为判断链表是否有环&#xff0c;如果有环找到环的起点。本题修改为求环的长度&#xff0c;基本思路一致&#xff0c;依然为双指针。当快慢指针相遇之后&#xff0c;如果寻找环的起点&…

防火墙内容安全综合实验

一、实验拓扑 二、实验要求 1&#xff0c;假设内网用户需要通过外网的web服务器和pop3邮件服务器下载文件和邮件&#xff0c;内网的FTP服务器也需要接受外网用户上传的文件。针对该场景进行防病毒的防护。 2&#xff0c;我们需要针对办公区用户进行上网行为管理&#xff0c;要…

【LeetCode】翻转二叉树

目录 一、题目二、解法完整代码 一、题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root…

数据可视化配色新工具,颜色盘多达2500+类

好看的配色,不仅能让图表突出主要信息,更能吸引读者,之前分享过很多配色工具,例如, 👉可视化配色工具:颜色盘多达3000+类,数万种颜色! 本次再分享一个配色工具pypalettes,颜色盘多达2500+类。 安装pypalettes pip install pypalettes pypalettes使用 第1步,挑选…

1.17、基于竞争层的竞争学习(matlab)

1、基于竞争层的竞争学习简介及原理 竞争学习是一种无监督学习方法&#xff0c;其中的竞争层神经元之间互相竞争以学习输入模式的表示。竞争学习的一个经典模型是竞争神经网络&#xff08;Competitive Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;其核心部分是…

【JavaScript 算法】拓扑排序:有向无环图的应用

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现方法一&#xff1a;Kahn算法方法二&#xff1a;深度优先搜索&#xff08;DFS&#xff09;注释说明&#xff1a; 三、应用场景四、总结 拓扑排序&#xff08;Topological Sorting&#xff09;是一种…