2024-07-16 Unity插件 Odin Inspector6 —— Group Attributes

文章目录

  • 1 说明
  • 2 Group 特性
    • 2.1 BoxGroup
    • 2.2 ButtonGroup
    • 2.3 FoldoutGroup
    • 2.4 ShowIfGroup / HideIfGroup
    • 2.5 HorizontalGroup
    • 2.6 ResponsiveButtonGroup
    • 2.7 TabGroup
    • 2.8 ToggleGroup
    • 2.9 VerticalGroup

1 说明

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

2 Group 特性

2.1 BoxGroup

绘制按钮组。

  • string group

    按钮组名称。

  • bool showLabel = true

    是否显示标题。

  • bool centerLabel = false

    标题是否居中。

  • float order = 0.0f

    按钮组的排序。

image-20240716034040374
// BoxGroupExamplesComponent.csusing Sirenix.OdinInspector;
using System;
using UnityEngine;public class BoxGroupExamplesComponent : MonoBehaviour
{// Box with a title.[BoxGroup("Some Title")]public string A;[BoxGroup("Some Title")]public string B;// Box with a centered title.[BoxGroup("Centered Title", centerLabel: true)]public string C;[BoxGroup("Centered Title")]public string D;// Box with a title received from a field.[BoxGroup("$G")]public string E = "Dynamic box title 2";[BoxGroup("$G")]public string F;// No title[BoxGroup]public string G;[BoxGroup]public string H;// A named box group without a title.[BoxGroup("NoTitle", false)]public string I;[BoxGroup("NoTitle")]public string J;[BoxGroup("A Struct In A Box"), HideLabel]public SomeStruct BoxedStruct;public SomeStruct DefaultStruct;[Serializable]public struct SomeStruct{public int One;public int Two;public int Three;}
}

2.2 ButtonGroup

将 Button 分组显示。

  • string group = "_DefaultGroup"

    组名。

  • float order = 0.0f

    顺序。

  • int ButtonHeight

    按钮组中所有按钮的高度。

image-20240715003708316
// ButtonGroupExamplesComponent.csusing System;
using Sirenix.OdinInspector;
using UnityEngine;public class ButtonGroupExamplesComponent : MonoBehaviour
{public IconButtonGroupExamples iconButtonGroupExamples;[ButtonGroup]private void A() { }[ButtonGroup]private void B() { }[ButtonGroup]private void C() { }[ButtonGroup]private void D() { }[Button(ButtonSizes.Large)][ButtonGroup("My Button Group")]private void E() { }[GUIColor(0, 1, 0)][ButtonGroup("My Button Group")]private void F() { }[Serializable, HideLabel]public struct IconButtonGroupExamples{[ButtonGroup(ButtonHeight = 25), Button(SdfIconType.ArrowsMove, "")]void ArrowsMove() { }[ButtonGroup, Button(SdfIconType.Crop, "")]void Crop() { }[ButtonGroup, Button(SdfIconType.TextLeft, "")]void TextLeft() { }[ButtonGroup, Button(SdfIconType.TextRight, "")]void TextRight() { }[ButtonGroup, Button(SdfIconType.TextParagraph, "")]void TextParagraph() { }[ButtonGroup, Button(SdfIconType.Textarea, "")]void Textarea() { }}
}

​ 可以与 TitleGroup 组合使用。

image-20240715003758748
// BigTitleGroupExampleComponent.cs
using Sirenix.OdinInspector;
using UnityEngine;public class BigTitleGroupExampleComponent : MonoBehaviour
{[BoxGroup("Titles", ShowLabel = false)][TitleGroup("Titles/First Title")]public int A;[BoxGroup("Titles/Boxed")][TitleGroup("Titles/Boxed/Second Title")]public int B;[TitleGroup("Titles/Boxed/Second Title")]public int C;[TitleGroup("Titles/Horizontal Buttons")][ButtonGroup("Titles/Horizontal Buttons/Buttons")]public void FirstButton() { }[ButtonGroup("Titles/Horizontal Buttons/Buttons")]public void SecondButton() { }
}

2.3 FoldoutGroup

将对象添加到折叠组。

  • string groupName

    折叠组名称。

  • bool expanded

    是否默认展开。

  • float order = 0.0f

    折叠组的排序。

image-20240716034608539
// FoldoutGroupAttributeExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class FoldoutGroupAttributeExamplesComponent : MonoBehaviour
{[FoldoutGroup("Group 1")]public int A;[FoldoutGroup("Group 1")]public int B;[FoldoutGroup("Group 1")]public int C;[FoldoutGroup("Collapsed group", expanded: false)]public int D;[FoldoutGroup("Collapsed group")]public int E;[FoldoutGroup("$GroupTitle", expanded: true)]public int One;[FoldoutGroup("$GroupTitle")]public int Two;public string GroupTitle = "Dynamic group title";
}

2.4 ShowIfGroup / HideIfGroup

满足某个条件,则显示 / 隐藏指定组。

  • string path

    指定组的路径。

  • object value

    与路径末尾标签重名的属性等于该值时,则满足条件。

  • bool animate = true

    状态改变时是否启用滑入和滑出动画显示。

image-20240716000503730
// HideIfGroupExampleComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class HideIfGroupExampleComponent : MonoBehaviour
{public bool Toggle = true;[HideIfGroup("Toggle")][BoxGroup("Toggle/Shown Box")]public int A, B;[BoxGroup("Box")]public InfoMessageType EnumField = InfoMessageType.Info;[BoxGroup("Box")][HideIfGroup("Box/Toggle")]public Vector3 X, Y;// Like the regular If-attributes, HideIfGroup also supports specifying values.// You can also chain multiple HideIfGroup attributes together for more complex behaviour.[HideIfGroup("Box/Toggle/EnumField", Value = InfoMessageType.Info)][BoxGroup("Box/Toggle/EnumField/Border", ShowLabel = false)]public string Name;[BoxGroup("Box/Toggle/EnumField/Border")]public Vector3 Vector;// HideIfGroup will by default use the name of the group,// but you can also use the MemberName property to override this.[HideIfGroup("RectGroup", Condition = "Toggle")]public Rect Rect;
}

2.5 HorizontalGroup

将对象添加到水平组。

  • float width = 0.0f

    水平宽度。

  • int marginLeft/marginRight = 0

    左/右侧边距(单位:像素)。

  • int PaddingLeft/PaddingRight = 0

    左右填充。

    值介于 0 和 1 之间的值将被视为百分比;值为 0 则表示忽略;大于 1 的整数被视为像素。

  • float order = 0.0f

    水平组的排序。

  • float Gap = 3f

    每列之间的宽度。

    值介于 0 和 1 之间的值将被视为百分比;否则为像素。

  • string Title

    水平组的标题名称。

image-20240716035140890
// HorizontalGroupAttributeExamplesComponent.csusing System;
using Sirenix.OdinInspector;
using UnityEngine;public class HorizontalGroupAttributeExamplesComponent : MonoBehaviour
{// The width can either be specified as percentage or pixels.// All values between 0 and 1 will be treated as a percentage.// If the width is 0 the column will be automatically sized.// Auto width[HorizontalGroup]public SomeFieldType Left1;[HorizontalGroup]public SomeFieldType Right1;// Margins[HorizontalGroup("row2", MarginRight = 0.4f)]public SomeFieldType Left2;[HorizontalGroup("row2")]public SomeFieldType Right2;// Custom width:[HorizontalGroup("row1", Width = 0.25f)] // 25 %public SomeFieldType Left3;[HorizontalGroup("row1", Width = 150)] // 150 pxpublic SomeFieldType Center3;[HorizontalGroup("row1")] // Auto / expandpublic SomeFieldType Right3;// Gap Size[HorizontalGroup("row3", Gap = 3)]public SomeFieldType Left4;[HorizontalGroup("row3")]public SomeFieldType Center4;[HorizontalGroup("row3")] // Auto / expandpublic SomeFieldType Right4;// Title[HorizontalGroup("row4", Title = "Horizontal Group Title")]public SomeFieldType Left5;[HorizontalGroup("row4")]public SomeFieldType Center5;[HorizontalGroup("row4")]public SomeFieldType Right5;[HideLabel, Serializable]public struct SomeFieldType{[LabelText("@$property.Parent.NiceName")][ListDrawerSettings(ShowIndexLabels = true)]public float[] x;}
}

2.6 ResponsiveButtonGroup

将按钮绘制在组内,该组将响应其可用的水平空间。

  • string group = "_DefaultResponsiveButtonGroup"

    组名。

image-20240715004200320
// ResponsiveButtonGroupExampleComponent.cs
using Sirenix.OdinInspector;
using UnityEngine;#if UNITY_EDITOR // Editor namespaces can only be used in the editor.
using Sirenix.OdinInspector.Editor.Examples;
#endifpublic class ResponsiveButtonGroupExampleComponent : MonoBehaviour
{
#if UNITY_EDITOR // Editor-related code must be excluded from builds[Button(ButtonSizes.Large), GUIColor(0, 1, 0)]private void OpenDockableWindowExample(){var window = UnityEditor.EditorWindow.GetWindow<MyDockableGameDashboard>();window.WindowPadding = new Vector4();}
#endif[OnInspectorGUI] private void Space1() { GUILayout.Space(20); }[ResponsiveButtonGroup] public void Foo() { }[ResponsiveButtonGroup] public void Bar() { }[ResponsiveButtonGroup] public void Baz() { }[OnInspectorGUI] private void Space2() { GUILayout.Space(20); }[ResponsiveButtonGroup("UniformGroup", UniformLayout = true)] public void Foo1() { }[ResponsiveButtonGroup("UniformGroup")] public void Foo2() { }[ResponsiveButtonGroup("UniformGroup")] public void LongesNameWins() { }[ResponsiveButtonGroup("UniformGroup")] public void Foo4() { }[ResponsiveButtonGroup("UniformGroup")] public void Foo5() { }[ResponsiveButtonGroup("UniformGroup")] public void Foo6() { }[OnInspectorGUI] private void Space3() { GUILayout.Space(20); }[ResponsiveButtonGroup("DefaultButtonSize", DefaultButtonSize = ButtonSizes.Small)] public void Bar1() { }[ResponsiveButtonGroup("DefaultButtonSize")] public void Bar2() { }[ResponsiveButtonGroup("DefaultButtonSize")] public void Bar3() { }[Button(ButtonSizes.Large), ResponsiveButtonGroup("DefaultButtonSize")] public void Bar4() { }[Button(ButtonSizes.Large), ResponsiveButtonGroup("DefaultButtonSize")] public void Bar5() { }[ResponsiveButtonGroup("DefaultButtonSize")] public void Bar6() { }[OnInspectorGUI] private void Space4() { GUILayout.Space(20); }[FoldoutGroup("SomeOtherGroup")][ResponsiveButtonGroup("SomeOtherGroup/SomeBtnGroup")] public void Baz1() { }[ResponsiveButtonGroup("SomeOtherGroup/SomeBtnGroup")] public void Baz2() { }[ResponsiveButtonGroup("SomeOtherGroup/SomeBtnGroup")] public void Baz3() { }
}

​ 与 TabGroup 结合使用:

image-20240715004248291
// BigTabGroupExampleComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class BigTabGroupExampleComponent : MonoBehaviour
{[TitleGroup("Tabs")][HorizontalGroup("Tabs/Split", Width = 0.5f)][TabGroup("Tabs/Split/Parameters", "A")]public string NameA, NameB, NameC;[TabGroup("Tabs/Split/Parameters", "B")]public int ValueA, ValueB, ValueC;[TabGroup("Tabs/Split/Buttons", "Responsive")][ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]public void Hello() { }[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]public void World() { }[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]public void And() { }[ResponsiveButtonGroup("Tabs/Split/Buttons/Responsive/ResponsiveButtons")]public void Such() { }[Button][TabGroup("Tabs/Split/Buttons", "More Tabs")][TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]public void SubButtonA() { }[Button][TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "A")]public void SubButtonB() { }[Button(ButtonSizes.Gigantic)][TabGroup("Tabs/Split/Buttons/More Tabs/SubTabGroup", "B")]public void SubButtonC() { }
}

2.7 TabGroup

将对象添加到选项卡组中。

  • string group

    组名。不指定组名,则添加到默认组中。

  • string tab

    选项卡。

  • SdfIconType icon

    图标。

  • bool useFixedHeight = false

    设置为 true,使整个选项卡组的高度保持恒定。

  • float order = 0.0f

    选项卡组的显示顺序(从小到大)。

  • string TextColor

    字体颜色。支持多种颜色格式。

    1. 命名颜色。如 “red”, “orange”, “green”, “blue”。
    2. 十六进制代码。如 “#FF0000”、“#FF0000FF”。
    3. RGBA。如 “RGBA(1,1,1,1)”。
    4. RGB。如 “RGB(1,1,1)”。
  • string TabName

    Inspector 窗口中显示的选项卡名称。

  • TabLayouting TabLayouting

    选项卡布局。

image-20240716040053425
// TabGroupExamplesComponent.csusing Sirenix.OdinInspector;
using System;
using UnityEngine;public class TabGroupExamplesComponent : MonoBehaviour
{[TabGroup("General")]public string playerName1;[TabGroup("General")]public int playerLevel1;[TabGroup("General")]public string playerClass1;[TabGroup("Stats")]public int strength1;[TabGroup("Stats")]public int dexterity1;[TabGroup("Stats")]public int intelligence1;[TabGroup("Quests")]public bool hasMainQuest1;[TabGroup("Quests")]public int mainQuestProgress1;[TabGroup("Quests")]public bool hasSideQuest1;[TabGroup("Quests")]public int sideQuestProgress1;[TabGroup("tab2", "General", SdfIconType.ImageAlt, TextColor = "green")]public string playerName2;[TabGroup("tab2", "General")]public int playerLevel2;[TabGroup("tab2", "General")]public string playerClass2;[TabGroup("tab2", "Stats", SdfIconType.BarChartLineFill, TextColor = "blue")]public int strength2;[TabGroup("tab2", "Stats")]public int dexterity2;[TabGroup("tab2", "Stats")]public int intelligence2;[TabGroup("tab2", "Quests", SdfIconType.Question, TextColor = "@questColor", TabName = "")]public bool hasMainQuest2;[TabGroup("tab2", "Quests")]public Color questColor = new Color(1, 0.5f, 0);[TabGroup("shrink tabs", "World Map", SdfIconType.Map, TextColor = "orange", TabLayouting = TabLayouting.Shrink)][TabGroup("shrink tabs", "Character", SdfIconType.PersonFill, TextColor = "orange")][TabGroup("shrink tabs", "Wand", SdfIconType.Magic, TextColor = "red")][TabGroup("shrink tabs", "Abilities", TextColor = "green")][TabGroup("shrink tabs", "Missions", SdfIconType.ExclamationSquareFill, TextColor = "yellow")][TabGroup("shrink tabs", "Collection 1", TextColor = "blue")][TabGroup("shrink tabs", "Collection 2", TextColor = "blue")][TabGroup("shrink tabs", "Collection 3", TextColor = "blue")][TabGroup("shrink tabs", "Collection 4", TextColor = "blue")][TabGroup("shrink tabs", "Settings", SdfIconType.GearFill, TextColor = "grey")][TabGroup("shrink tabs", "Guide", SdfIconType.QuestionSquareFill, TextColor = "blue")]public float a, b, c, d;[TabGroup("multi row", "World Map", SdfIconType.Map, TextColor = "orange", TabLayouting = TabLayouting.MultiRow)][TabGroup("multi row", "Character", SdfIconType.PersonFill, TextColor = "orange")][TabGroup("multi row", "Wand", SdfIconType.Magic, TextColor = "red")][TabGroup("multi row", "Abilities", TextColor = "green")][TabGroup("multi row", "Missions", SdfIconType.ExclamationSquareFill, TextColor = "yellow")][TabGroup("multi row", "Collection 1", TextColor = "blue")][TabGroup("multi row", "Collection 2", TextColor = "blue")][TabGroup("multi row", "Collection 3", TextColor = "blue")][TabGroup("multi row", "Collection 4", TextColor = "blue")][TabGroup("multi row", "Settings", SdfIconType.GearFill, TextColor = "grey")][TabGroup("multi row", "Guide", SdfIconType.QuestionSquareFill, TextColor = "blue")]public float e, f, g, h;[Serializable][HideLabel]public class MyTabObject{public int A;public int B;public int C;}
}

2.8 ToggleGroup

将对象添加进单选框组。

  • string toggleMemberName

    启用或禁用 ToggleGroup 的任何 bool 字段或属性的名称。

  • float order = 0.0f

    单选框组的排序。

  • string groupTitle = null

    Inspector 窗口中显示的标题名称。

image-20240716043131827
// ToggleGroupExamplesComponent.csusing Sirenix.OdinInspector;
using System;
using UnityEngine;public class ToggleGroupExamplesComponent : MonoBehaviour
{// Simple Toggle Group[ToggleGroup("MyToggle")]public bool MyToggle;[ToggleGroup("MyToggle")]public float A;[ToggleGroup("MyToggle")][HideLabel, Multiline]public string B;// Toggle for custom data.[ToggleGroup("EnableGroupOne", "$GroupOneTitle")]public bool EnableGroupOne = true;[ToggleGroup("EnableGroupOne")]public string GroupOneTitle = "One";[ToggleGroup("EnableGroupOne")]public float GroupOneA;[ToggleGroup("EnableGroupOne")]public float GroupOneB;// Toggle for individual objects.[Toggle("Enabled")]public MyToggleObject Three = new MyToggleObject();[Toggle("Enabled")]public MyToggleA Four = new MyToggleA();[Toggle("Enabled")]public MyToggleB Five = new MyToggleB();public MyToggleC[] ToggleList = new MyToggleC[] {new MyToggleC() { Test = 2f, Enabled = true, },new MyToggleC() { Test = 5f, },new MyToggleC() { Test = 7f, },};[Serializable]public class MyToggleObject{public bool Enabled;[HideInInspector]public string Title;public int A;public int B;}[Serializable]public class MyToggleA : MyToggleObject{public float C;public float D;public float F;}[Serializable]public class MyToggleB : MyToggleObject{public string Text;}[Serializable]public class MyToggleC{[ToggleGroup("Enabled", "$Label")]public bool Enabled;public string Label { get { return this.Test.ToString(); } }[ToggleGroup("Enabled")]public float Test;}
}

2.9 VerticalGroup

将对象添加到垂直组。

  • string groupId

    垂直组 ID。

  • float order = 0.0f

    垂直组的排序。

  • float PaddingTop/PaddingBottom

    上下填充(单位:像素)。

image-20240716044058307
// VerticalGroupExamplesComponent.csusing Sirenix.OdinInspector;
using UnityEngine;public class VerticalGroupExamplesComponent : MonoBehaviour
{[HorizontalGroup("Split")][VerticalGroup("Split/Left")]public InfoMessageType First;[VerticalGroup("Split/Left")]public InfoMessageType Second;[HideLabel][VerticalGroup("Split/Right")]public int A;[HideLabel][VerticalGroup("Split/Right")]public int B;
}

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

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

相关文章

【解决问题】permission denied while trying to connect to the Docker daemon socket

解决方法 sudo usermod -aG docker $USER 运行上面命令&#xff0c;将当前用户添加到 docker 组&#xff0c;重启电脑。 GPT-4o (OpenAI) 看起来你在尝试通过 make build 构建项目时遇到了权限问题&#xff0c;尤其是在拉取 Docker 镜像时没有权限访问 Docker 的 Unix 套接…

如何使用 GPT?

​通过实例&#xff0c;来展示如何最好地使用 GPT。 生成文字 假设你在写一篇文章&#xff0c;需要在结尾加上这样一句&#xff1a;「California’s population is 53 times that of Alaska.」&#xff08;加州的人口是阿拉斯加州的 53 倍&#xff09;。 但现在你不知道这两个…

谷歌准备斥资 230 亿收购网络安全初创公司 Wiz

Alphabet 正在就收购 Wiz 进行深入谈判&#xff0c;这将显著增强其安全能力。这将是谷歌母公司有史以来最大规模的收购。 这是路透社根据匿名消息来源撰写的内容。目标收购金额为230亿美元&#xff0c;即211亿欧元。 Wiz 拥有实时检测和响应网络威胁的技术。通过实施人工智能…

有关电力电子技术的一些相关仿真和分析:⑥单相相控调压电路与单相斩控调压电路(MATLAB/Siumlink仿真)

针对单相相控调压电路&#xff0c;仿真研究对于给定负载&#xff0c;不同触发角作用下&#xff0c;输出电压波形和输入电流波形&#xff08;对照电网电压&#xff09;&#xff0c;研究输出电压有效值随触发角变化的规律&#xff0c;讨论并验证输入电流连续的条件。采用相同的电…

WPF实现一个带旋转动画的菜单栏

WPF实现一个带旋转动画的菜单栏 一、创建WPF项目及文件1、创建项目2、创建文件夹及文件3、添加引用 二、代码实现2.ControlAttachProperty类 一、创建WPF项目及文件 1、创建项目 打开VS2022,创建一个WPF项目&#xff0c;如下所示 2、创建文件夹及文件 创建资源文件夹&…

<Qt> 初识Qt

目录 一、项目文件解析 widget.h main.cpp widget.cpp widget.ui .pro文件 二、QT 实现Hello World程序 &#xff08;一&#xff09;按钮控件 1. 纯代码 2. 图形化 &#xff08;二&#xff09;标签控件 1. 纯代码 2. 图形化 三、内存泄漏问题 四、qdebug()的使用…

php基础: 三角形

包含&#xff1a;左三角、左上三角、右三角、右上三角、等腰三角、倒等腰三角。注意空格的数量&#xff0c;因为*号后面加了空格 /*** * 左三角形* param $n* return void*/ function triangleLeft($n){echo <pre>;for ($i 1; $i < $n; $i) {for ($j 1; $j < $i…

el-table的selection多选表格改为单选

需求场景: 选择表格数据时&#xff0c;需要控制单条数据的操作按钮是否禁用。 效果图: html代码: <div><el-tableref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"selection-change"handl…

Android:创建自定义View

点击查看创建自定义view官网文档 一、简介 设计良好的自定义视图与任何其他精心设计的类一样。它通过一个简单的接口封装一组特定的功能&#xff0c;高效使用 CPU 和内存&#xff0c;诸如此类。除了是一个精心设计的类之外&#xff0c;自定义视图还必须执行以下操作&#xff1…

LinuxShell编程2——shell搭建Discuzz论坛网站

目录 一、环境准备 ①准备一台虚拟机 ②初始化虚拟机 1、关闭防火墙 2、关闭selinux 3、配置yum源 4、修改主机名 二、搭建LAMP环境 ①安装httpd(阿帕奇apache&#xff09;服务器 查看是否安装过httpd 启动httpd 设置开机启动 查看状态 安装网络工具 测试 ②安装…

STM32 - FLASH 笔记

STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程 读写FLASH的用途&#xff1a; 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在程序…

java设计模式(十五)命令模式(Command Pattern)

1、模式介绍&#xff1a; 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;其主要目的是将请求封装成一个对象&#xff0c;从而允许使用不同的请求、队列或者日志来参数化其他对象。这种模式使得命令的请求者和实现者解耦。 2、应用场景&…

【ARM】MDK-服务器与客户端不同网段内出现卡顿问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录不同网段之间的请求发送情况以及MDK网络版license文件内设置的影响。 2、 问题场景 客户使用很久的MDK网络版&#xff0c;在获取授权时都会出现4-7秒的卡顿&#xff0c;无法对keil进行任何操作&#xff0c;彻底…

ChatGPT Mac App 发布!

2024 年 6 月&#xff0c;OpenAI 的大语言模型 ChatGPT 的 Mac 客户端与 ChatGPT-4o 一起发布了。ChatGPT Mac 户端可以让用户直接在 Mac 电脑上使用 ChatGPT 进行对话。它提供了一个简单易用的用户界面&#xff0c;用户可以在其中输入文本或语音指令&#xff0c;并接收模型生成…

【Python百日进阶-Web开发-音频】Day702 - librosa安装及模块一览表

文章目录 一、Librosa简介与安装1.1 Librosa是什么1.2 Librosa官网 二、Librosa安装2.1 安装Librosa 三、安装ffmpeg3.1 ffmpeg官网下载3.2 ffmpeg安装3.2.1 解压3.2.2 添加环境变量3.2.3 测试ffmpeg是否安装成功 四、Librosa 库模块一览4.1 库函数结构4.2 Audio processing&am…

C++相关概念和易错语法(21)(虚函数、协变、析构函数的重写)

多态的核心是虚函数&#xff0c;本文从虚函数出发&#xff0c;根据原理慢慢推进得到结论&#xff0c;进而理解多态 1.虚函数 先看一下下面的代码&#xff0c;想想什么导致了这个结果 #include <iostream> using namespace std;class A { public:virtual void test(){co…

元服务体验-服务发现

服务发现&#xff0c;无论线上或线下的方式都可以发现元服务。 线上&#xff1a;基于用户意图。从精准意图的搜索、用户事件触发的推荐到主动探索等场景。用户可以在设备的负一屏、全局搜索、应用市场、桌面等场景发现元服务。 线下&#xff1a;用户在 HarmonyOS Connect标签…

华为HCIP Datacom H12-821 卷39

1.填空题 请2001 :0DB8:0000:C030:0000: 000: 09A0:CDEF地址进行压缩。() (若答案中存在字母&#xff0c;请采用大写格式) 参考答案&#xff1a;2001 :DB8:0:C030: :9A0:CDEF 解析&#xff1a; IPv6地址的表示方法 IPv6地址总长度为128比特&#xff0c;通常分为8组&#xff0c…

LeetCode 20.有效的括号 C写法

LeetCode 20.有效的括号 C写法 思路&#x1f9d0;&#xff1a; ​ 这题最优思路是用栈来进行匹配&#xff0c;如果是左括号就入栈&#xff0c;如果是右括号那么左括号就出栈去匹配&#xff0c;匹配成功就继续入栈或者出栈&#xff0c;匹配失败则字符串无效。不过C语言没有STL…

win10远程ubuntu服务器桌面且显示图像窗口工具及配置说明

仅需一个MobaXterm_Personal工具就可以实现 网上的教程比较多&#xff0c;实现起来比较复杂&#xff0c;这个是经过自己的钻研找到的方法&#xff08;请勿转载和抄袭&#xff09; 报错&#xff1a;cannot connect to X server :0.0 操作1&#xff1a;export DISPLAY自己windo…