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.mzph.cn/web/47058.shtml

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

相关文章

Training for Stable Diffusion

1.Training for Stable Diffusion 笔记来源&#xff1a; 1.Denoising Diffusion Probabilistic Models 2.最大似然估计(Maximum likelihood estimation) 3.Understanding Maximum Likelihood Estimation 4.How to Solve ‘CUDA out of memory’ in PyTorch 1.1 Introduction …

如何设计分布式锁?

1. 为什么需要使用分布式锁&#xff1f; 在实际项目中&#xff0c;经常会遇到多个客户端对同一个资源或数据进行访问&#xff0c;为了避免并发访问带来错误&#xff0c;就会对该资源或数据加一把锁&#xff0c;只允许获得锁的客户端进行操作。 总结来说&#xff0c;分布式锁是…

新能源汽车空调系统的四个工作过程

汽车空调制冷系统组成 1.汽车空调制冷系统组成 以R134a为制冷剂的汽车空调制冷系统主要包括压缩机、电磁离合器、冷凝器、 散热风扇、储液于燥器、膨胀阀、蒸发器、鼓风机、制冷连接管路、高低压检测 连接接头、调节与控制装置等组成。 汽车空调的四个过程 1压缩过程 传统车…

金融数据的pandas模块应用

金融数据的pandas模块应用 数据链接&#xff1a;https://pan.baidu.com/s/1VMh8-4IeCUYXB9p3rL45qw 提取码&#xff1a;c6ys 1. 导入所需基础库 import pandas as pd import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams[font.sans-serif][FangSong] mpl.rcP…

JAVA.1.新建项目

1.代码结构 2.如何创建项目 1.创建工程 至此&#xff0c;我们创建了我们的第一个工程 2.创建模块 可见已经有了p28的一个模块&#xff0c;删掉了再添加 展开src 3.创建包 4.新建类 5.编写代码 package demo1;public class Hello {public static void main(String[] args) {Sys…

华为od机试真题:火星符号运算(Python)

题目描述 已知火星人使用的运算符号为 #和$ 其与地球人的等价公式如下 x#y2*x3*y4 x$y3*xy2x y是无符号整数。地球人公式按照c语言规则进行计算。火星人公式中&#xff0c;# 号的优先级高于 $ ,相同的运算符&#xff0c;按从左往右的顺序计算 现有一段火星人的字符串报文&a…

基于Centos7搭建rsyslog服务器

一、配置rsyslog可接收日志 1、准备新的Centos7环境 2、部署lnmp环境 # 安装扩展源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 安装扩展源 yum install nginx -y# 安装nginx yum install -y php php-devel php-fpm php-mysql php-co…

UNiapp 微信小程序渐变不生效

开始用的一直是这个&#xff0c;调试一直没问题&#xff0c;但是重新启动就没生效&#xff0c;经查询这个不适合小程序使用&#xff1a;不适合没生效 background-image:linear-gradient(to right, #33f38d8a,#6dd5ed00); 正确使用下面这个&#xff1a; 生效&#xff0c;适合…

【TensorRT】Yolov5-DeepSORT 目标跟踪

Yolov5-DeepSORT-TensorRT 本项目是 Yolo-DeepSORT 的 C 实现&#xff0c;使用 TensorRT 进行推理 &#x1f680;&#x1f680;&#x1f680; 开源地址&#xff1a;Yolov5_DeepSORT_TensorRT&#xff0c;求 star⭐ ~ 引言 ⚡ 推理速度可达25-30FPS&#xff0c;可以落地部署&…

LeetCode-day20-2850. 将石头分散到网格图的最少移动次数

LeetCode-day20-2850. 将石头分散到网格图的最少移动次数 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个大小为 3 * 3 &#xff0c;下标从 0 开始的二维整数矩阵 grid &#xff0c;分别表示每一个格子里石头的数目。网格图中总共恰好有 9 个石头…

5.java操作RabbitMQ-简单队列

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

如何在 Mac 上下载安装植物大战僵尸杂交版? 最新版本 2.2 详细安装运行教程问题详解

植物大战僵尸杂交版已经更新至2.2了&#xff0c;但作者只支持 Windows、手机等版本并没有支持 MAC 版本&#xff0c;最近搞到了一个最新的杂交 2.2 版本的可以在 Macbook 上安装运行的移植安装包&#xff0c;试了一下非常完美能够正常在 MAC 上安装运行&#xff0c;看图&#x…

Pytest测试框架的基本使用

目录 安装教程 Pytest命名约束 创建测试用例 执行测试用例 生成测试报告 参数化测试 pytest框架 pytest是目前非常成熟且功能齐全的一个测试框架&#xff0c;能够进行简单的单元测试和复杂的功能测试。还可以结合selenium/appnium进行自动化测试&#xff0c;或结合reques…

加拿大上市药品查询-加拿大药品数据库

在加拿大&#xff0c;药品的安全性、有效性和质量是受到严格监管的。根据《食品药品法案》的规定&#xff0c;所有药品制造商必须提供充分的科学证据&#xff0c;证明其产品的安全性和有效性。为此&#xff0c;加拿大卫生部建立了一个全面的药品数据库 &#xff08;DPD) &#…

【C++】类和对象——默认成员函数(下)

目录 前言拷贝构造1.概念2.特征3.总结 赋值重载运算符重载赋值运算符重载探讨传引用返回和传值返回的区别 const成员取地址及const取地址操作符重载 前言 上一讲我们已经说了关于C的默认成员函数中的两个——构造和析构函数。所谓默认成员函数也就是&#xff1a;用户没有显示定…

你的Type-c接口有几颗牙齿

C 口为啥不能混用 想想 C 口当年推出时给我们画的饼&#xff0c;“正反都能插&#xff0c;而且充电、传数据、连显示器等等&#xff0c;什么活都能干”&#xff0c;而实现这一切的前提全靠 C 口里面的 24 根针脚 这 24 根真叫呈中心对称分布&#xff0c;这种设计使得插头可以以…

iPhone手机上备忘录怎么设置字数显示

在日常生活和工作中&#xff0c;我经常会使用iPhone的备忘录功能来记录一些重要的想法、待办事项或临时笔记。备忘录的便捷性让我可以随时捕捉灵感&#xff0c;但有时候&#xff0c;我也会苦恼于不知道自己记录了多少内容&#xff0c;尤其是在需要控制字数的时候。 想象一下&a…

机器学习 | 深入理解激活函数

什么是激活函数&#xff1f; 在人工神经网络中&#xff0c;节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后&#xff0c;将此输出用作下一个节点的输入&#xff0c;依此类推&#xff0c;直到找到原始问题的所需解决方案。 它将结果值映射到所需的范围…

【功能】DOTween动画插件使用

一、下载安装DOTween插件&#xff0c;下载地址&#xff1a;DOTween - Asset Store (unity.com) 使用 Free免费版本即可&#xff0c;导入成功后&#xff0c;Project视图中会出现 DOTween 文件夹 二、使用案例 需求1&#xff1a;控制材质球中的某个属性值&#xff0c;实现美术需…

SQL执行流程、SQL执行计划、SQL优化

select查询语句 select查询语句中join连接是如何工作的&#xff1f; 1、INNER JOIN 返回两个表中的匹配行。 2、LEFT JOIN 返回左表中的所有记录以及右表中的匹配记录。 3、RIGHT JOIN 返回右表中的所有记录以及左表中的匹配记录。 4、FULL OUTER JOIN 返回左侧或右侧表中有匹…