Unity 集成 FMOD 音频管理插件 2.02

Unity 集成 FMOD 音频管理插件 2.02

    • 3. 集成教程:
      • 3.1 设置Unity项目
      • 3.2 设置FMOD项目
      • 3.3 设置 FMOD for Unity
      • 3.4 添加声音:卡丁车引擎
      • 3.5 添加声音:氛围
      • 3.6 添加声音:音乐
      • 3.7 删除现有音频
      • 3.8 下一步
    • 10. 脚本 API 参考
      • 10.1 基础知识
      • 10.2 Unity Inspector 中的浏览器 UI
      • 10.2.1 事件
      • 10.2.2 BANK
      • 10.2.3 全局参数
    • 11 FMOD [主页链接](https://www.fmod.com/)

3. 集成教程:

本指南将向您展示如何开始使用 FMOD for Unity。您将采用现有的Unity项目,安装FMOD for Unity,并集成使用FMOD Studio创建的自适应音频。一步一步地跟着走,听听结果。完成本教程后,您应该有足够的知识将 FMOD 内容集成到任何 Unity 项目中。

您将使用的 Unity 项目是卡丁车微型游戏模板,这是一款专为学习而开发的 3D 卡丁车赛车游戏。为简单起见,您将使用 FMOD 示例项目中的音频内容。观看下面的视频,预览我们将要进行的更改:

前后对比一下我们将对卡丁车小游戏所做的更改。

让我们开始吧!

3.1 设置Unity项目

1 访问 Unity 网站并使用“下载 Unity Hub”按钮安装 Unity Hub。

2 登录 Asset Store 并从 Asset Store 将 Karting Microgame 添加到您的资产中。

3 运行 Unity Hub 并重新登录。

4 在 Unity Hub 中,单击“新建项目”。
请添加图片描述
5 单击“所有模板”,然后滚动到“卡丁车微型游戏”磁贴。
请添加图片描述
6 单击下载模板。
请添加图片描述
7 如果您尚未安装 Unity 引擎,系统将提示您安装一个引擎。如果您安装了兼容的引擎,请跳到步骤 8。
请添加图片描述
如果您看到以下消息:

a. 单击安装编辑器。
b. 在出现的提示符中,选择受支持的 Unity 版本(在 Karting Microgame 的 Asset Store 页面中注明),然后单击安装。
请添加图片描述
c. 单击“安装”
请添加图片描述
d. 等待安装完成,在 Unity Hub 的“安装”部分。
e. 完成后,再次单击“新建项目”,然后选择“卡丁车微型游戏”(如步骤 4 和 5 所示)。

8 输入项目名称,然后单击“创建项目”。

Unity 将打开并导入项目数据。这可能需要一些时间。 在 Windows 上,您可能需要接受任何提示才能允许防火墙访问。
打开Unity后,您将看到一个欢迎对话框,说明如何开始使用卡丁车微型游戏教程。

9 欢迎对话框可引导您完成 Unity 的 Karting Microgame 教程。由于我们没有遵循它,我们可以通过单击窗口右上角的叉号来关闭“欢迎”对话框。
请添加图片描述
10 在屏幕右侧,您会看到“教程”选项卡。同样,这在 Unity 的教程中使用,因此我们也可以通过单击菜单下拉列表并从菜单中选择“关闭选项卡”来关闭它。
请添加图片描述

让我们试着玩卡丁车游戏,听听目前的情况。

11 单击 Unity 窗口顶部的播放按钮。

游戏将在编辑器中开始播放。

12 使用键盘上的箭头键开始驾驶。

正如你所听到的,发动机的声音非常安静。我们可以暂时禁用音乐来听到引擎 - 但在进行任何更改之前,让我们保存此项目的新副本。

13 从菜单栏中选择“文件”>“退出”。
请添加图片描述
14 系统将提示您保留该项目。选择“保留”。
请添加图片描述
15 选择项目的保存位置和名称。

16 若要重新打开项目,请再次打开 Unity Hub。

17 从“项目”部分中,选择刚刚保存的项目。(有时 Unity Hub 不会显示较旧的项目。如果未显示项目,请单击“添加”按钮并导航到之前保存项目的位置。
请添加图片描述

等待项目在 Unity 中重新打开,然后再次单击播放按钮。

18 在游戏运行时,在左侧的“层次结构”选项卡中选择“BackgroundMusic”游戏对象。

19 取消选中右侧“检查器”窗格中的“音频源”组件。
请添加图片描述
20 使用方向键继续行驶。

21 听完引擎后,单击播放按钮退出游戏。

引擎的声音,以及游戏的一般音频,可能需要一些改进。我们可以使用 FMOD 来做到这一点。

3.2 设置FMOD项目

我们的计划是使用 FMOD Studio 示例中的音频内容。为此,我们需要安装 FMOD Studio 创作工具并创建一个新的 FMOD
Studio 项目。

1 转到 FMOD。

2 单击下载。

3 登录或创建帐户。

4 在下载页面上,单击 FMOD Studio Suite 部分将其展开,然后选择 2.02 子部分。

5 单击适合您正在使用的计算机平台(Windows 或 Mac)的下载链接。
请添加图片描述

FMOD for Unity的“Unity Verified”版本经过 Unity 的 QA 测试和认证,是兼容的解决方案。

6 运行下载的安装程序并按照安装说明进行操作。

接下来,让我们复制 FMOD Studio 附带的示例项目。

7 通过从 Windows 上的“开始”菜单或 Mac 上的“应用程序”文件夹中选择它来运行 FMOD Studio。 (在 Windows 上,接受任何允许防火墙访问的提示。

8 在欢迎对话框中,从“最近使用的项目”列表中选择 Examples.fspro 项目。(在 Mac 上,如果未显示 Examples.fspro,请单击“打开项目”以手动找到它。示例项目位于 FMOD Studio 安装目录的 examples 文件夹中。
请添加图片描述
9 从菜单栏中,选择“文件”>“另存为…”。
请添加图片描述
10 选择项目的保存位置和名称。当我们告诉Unity在哪里可以找到FMOD项目时,我们可以将项目保存在我们喜欢的任何位置。请勿在之前创建的 Unity 项目的 Assets 文件夹中选择位置。

示例项目包含许多事件。 在 FMOD中,事件是可以通过游戏代码控制的声音内容单元。游戏中发出声音的所有内容都应该有相应的事件。事件包含音频文件和播放逻辑。
在我们的游戏中,卡丁车的引擎将有自己的事件。 在本指南中,我们将使用 Kart 引擎示例项目中的现有事件。我们稍后将介绍如何创建新事件。

11 在窗口左侧的“事件”浏览器中,选择“车辆>驾驶式割草机”。该事件将显示在编辑器中。
请添加图片描述
12 单击传输栏中的播放按钮以试听事件。

13 在传输栏中拖动 RPM 滑块。
请添加图片描述

您应该听到以各种 RPM 播放的更准确的发动机声音模型。 我们的 Unity
游戏可以简单地播放此事件,在游戏过程中发送任何相关参数数据,例如 RPM 值。

14 单击停止按钮以停止试镜活动。
Setting up the FMOD Project

下一步是将我们的 FMOD 活动构建到银行中。稍后,我们将在 Unity 中加载库。

15 在菜单栏中,选择“文件”>“生成…”。
请添加图片描述

这些库将构建到 FMOD Studio 项目中的文件夹中。

3.3 设置 FMOD for Unity

现在,我们已准备好将银行加载到Unity中,以便可以触发卡丁车事件。首先,我们需要导入 FMOD for Unity。

1 在浏览器中导航到 FMOD for Unity。

请注意,在 Unity 2019.4 及更早版本中,资源存储会在“资源存储”窗口中打开。在搜索栏中搜索“FMOD for Unity”。

2 检查资产的主要版本是否与您的 FMOD Studio 版本匹配,即 2.02.xx(此外,由于包含程序集定义,本指南至少需要 2.02.04)。如果不匹配,请改为从 FMOD 网站下载。

3 单击“添加到我的资产”按钮。

在 Unity 2019.4 及更早版本中,此按钮标记为“下载”。

4 确保您已再次登录 Unity 帐户。

5 在 Unity 2020.1 及更高版本中,从 Unity 的菜单栏导航到 Window > Package Manager。

6 在“包管理器”窗口中,确保左上角的第二个下拉列表设置为“我的资产”。

7 选择 FMOD for Unity 资源,然后单击右下角的下载。

8 在包列表中选择“FMOD For Unity”,然后单击“下载”。下载完成后,单击“导入”按钮。

9 系统将提示您输入资产列表,将它们全部勾选,然后单击“导入”按钮。
请添加图片描述

(如果您使用的是 MacOS 10.15 Catalina,此时可能会遇到警告。如果是这样,请参阅以下内容:Catalina)。

10 “FMOD Setup Wizard”(FMOD 设置向导)窗口打开。单击“开始”。
请添加图片描述

11 下一页用于更新现有的 FMOD For Unity 设置。由于这是第一次,因此单击“下一步”。
请添加图片描述
12 选择 FMOD Studio 项目按钮,选择 FMOD Studio 项目文件夹中的文件(如前所述),然后单击下一步。*.fspro
请添加图片描述
13 下一页是删除原生 Unity 侦听器并将其替换为 FMOD 侦听器。单击“将 Unity 侦听器替换为 FMOD 音频侦听器”,然后单击“下一步”。
请添加图片描述
14 此页面用于禁用 Unity 的内置音频引擎。由于我们使用 FMOD 引擎处理音频,因此 Unity 内置音频引擎无需不断消耗资源。单击禁用内置音频按钮。
请添加图片描述
15 此页面将列出 Unity 项目中的所有 AudioSource Unity 组件。这对于导航到 Unity 项目中的所有 AudioSource 组件非常有用,以便您可以根据需要禁用或删除。由于我们想充分了解如何添加 FMOD 事件发射器组件并进一步操作它们,因此请保持此页面不变并单击下一步。
请添加图片描述
16 下一页用于复制在将 FMOD for Unity 与 Unity 项目一起使用时忽略某些文件和文件夹的规则。由于我们未将此 Unity 项目添加到源代码管理存储库,因此请单击“下一步”。
请添加图片描述
17 最后一页是使用 FMOD for Unity 向导执行的所有任务的列表。由于这是一个新项目,并且没有更改 Unity AudioSources,因此“更新”和“Unity 源”选项卡被列为“不完整”。这是意料之中的,因此请关闭设置向导,让我们开始将我们的事件放入 Unity 游戏中。
请添加图片描述

玩游戏并确保“日志”选项卡中没有显示错误。

祝贺!现在,您已经完成了 FMOD for Unity 的基本设置。本指南的其余部分将重点介绍如何将 FMOD 事件添加到卡丁车微型游戏中。

3.4 添加声音:卡丁车引擎

如前所述,我们希望玩家的卡丁车使用 Ride-on Mower FMOD 事件。首先,让我们添加一个组件来触发事件。

1 在左侧的“层次结构”选项卡中选择 KartClassic_Player/ArcadeEngineAudio 游戏对象。
请添加图片描述
2 单击 Inspector 选项卡底部的添加组件。

3 选择 FMOD Studio > FMOD Studio 事件发射器。
请添加图片描述
4 将“Play Event”字段设置为“对象启动”。
请添加图片描述
5 单击“事件”字段旁边的搜索按钮。

6 在浏览器弹出窗口中,双击 Events > Vehicles > Ride-on Mower。
请添加图片描述
7 在“初始参数值”部分下,从下拉列表中添加 RPM 并将值设置为 1000。
请添加图片描述

玩游戏。您现在应该听到卡丁车引擎以 1000 的恒定 RPM 值播放。 我们需要做的是将卡丁车的物理特性确定的 RPM 值与 FMOD事件联系起来。为此,我们将编辑现有的引擎音频 C# 脚本,以将 RPM 值传递给我们的事件。
但是,我们需要编辑的脚本使用程序集定义文件分配给自定义 KartGame 程序集。这意味着,在我们使 KartGame 程序集引用 FMODUnity 程序集之前,它将无法访问 FMOD 脚本。

8 在窗口底部的“项目”选项卡中,导航到“Assets > Karting > Scripts > KartGame”。

9 在检查器的“组件定义参照”(Assembly Definition References) 部分中,单击“+”按钮。

10 单击新组件定义参考上的目标图标,然后选择 FMODUnity 组件。
请添加图片描述

11 单击检查器底部的“应用”按钮。

现在,我们可以对引擎音频脚本进行更改。

12 在左侧的“层次结构”选项卡中选择 KartClassic_Player/ArcadeEngineAudio 游戏对象。

13 单击 Inspector 窗格中 Arcade Engine Audio 脚本组件上的上下文菜单图标。

14 选择“编辑脚本”。
请添加图片描述

15 脚本文件将在默认代码编辑器中打开。

16 我们需要用自己的代码替换现有代码,因此选择下面的所有代码并按 Cmd/Ctrl + C 进行复制。然后返回代码编辑器,按 Cmd/Ctrl + A 全选,然后按 Cmd/Ctrl + V 粘贴此代码:

using UnityEngine;namespace KartGame.KartSystems
{/// <summary>/// This class produces audio for various states of the vehicle's movement./// </summary>public class ArcadeEngineAudio : MonoBehaviour{public float minRPM = 0;public float maxRPM = 5000;ArcadeKart arcadeKart;void Awake(){arcadeKart = GetComponentInParent<ArcadeKart>();}void Update(){float kartSpeed     = arcadeKart != null ? arcadeKart.LocalSpeed() : 0;// set RPM value for the FMOD eventfloat effectiveRPM = Mathf.Lerp(minRPM, maxRPM, kartSpeed);var emitter = GetComponent<FMODUnity.StudioEventEmitter>();emitter.SetParameter("RPM", effectiveRPM); //核心代码}}
}

17 保存脚本并关闭文本编辑器。

再次玩游戏。发动机声音会随着您加速而变化。但是,发动机仍然需要一些调整。

18 确保在“层次结构”选项卡中仍选择“KartClassic_Player/ArcadeEngineAudio 游戏对象”。

19 在“引擎音频”脚本组件下,将“最小 RPM”设置为 500,将“最大 RPM”设置为 2000,以匹配 Ride-on Mower 事件的合理范围。
请添加图片描述

再次玩游戏。卡丁车引擎听起来应该好多了!

3.5 添加声音:氛围

现在我们已经让卡丁车引擎正常工作,让我们为音景添加一些氛围。

1 在左侧的“层次结构”选项卡中选择“BackgroundMusic”游戏对象。

2 单击 Inspector 选项卡底部的添加组件。

3 选择 FMOD Studio > FMOD Studio 事件发射器。
请添加图片描述
4 将“Play Event”字段设置为“对象启动”。

5 单击“事件”字段旁边的搜索按钮。

6 在浏览器弹出窗口中,双击 Events > Ambience > City。

7 在“初始参数值”部分下,从下拉列表中添加“流量”并将值设置为 0.3。
请添加图片描述

再次玩游戏。您应该听到城市氛围充满了音景。

3.6 添加声音:音乐

到目前为止,我们一直在使用 FMOD 示例项目中的事件。让我们尝试创建一个新事件。

这将是一个复制原始游戏循环背景音乐的简单事件。

1 在 FMOD Studio 中,右键单击(或在 Mac 上按住 Command 键单击)“音乐”文件夹,然后选择“事件默认值”>“2D 时间轴”。
请添加图片描述
2 输入活动名称:“卡丁车音乐”。

3 若要将事件分配给库进行导出,请在“事件”浏览器中右键单击(或在 Mac 上按住 Command 键单击)该事件,选择“分配给库”,然后选择“音乐库”。
请添加图片描述

我们将在新的FMOD活动中重用Unity项目中的原创音乐。

4 在 Unity 编辑器中,在窗口底部的“项目”选项卡中,导航到“资源”>“卡丁车”>“音频>音乐”。

5 右键单击(或在 Mac 上按住 Command 键单击)“音乐”资源,然后选择“在资源管理器中显示”(或在 Mac 上选择“在 Finder 中显示”)。
请添加图片描述
6 将 Music.mp3 文件从资源管理器(在 Mac 上为 Finder)窗口拖到 FMOD Studio 事件编辑器窗口,将其拖放到编辑器窗格中 Audio 1 轨道的正文上以创建音频。
请添加图片描述
7 单击播放按钮并确保可以听到音乐。

8 单击停止按钮结束试镜。

与原版游戏一样,我们希望音乐能够连续循环播放。

9 在前面步骤中创建的仪器上单击鼠标右键(或在 Mac 上按住 Command 键单击),然后选择“新建循环区域”。

播放事件,并观察音乐在到达循环区域的末尾时是否循环。
音乐将单独路由到音效。这样可以很容易地在以后调整混音。

10 在菜单栏中,选择 Window > Mixer。这将打开 Mixer 窗口。
请添加图片描述
11 在 Mixer 窗口的 Routing 浏览器中,将“Music/Kart Music”事件拖到“Music”组中。
请添加图片描述

我们需要构建BANK文件,将新的卡丁车音乐活动纳入游戏中。

12 在菜单栏中,选择“文件”>“生成…”。

接下来,让我们在游戏中触发这个事件。

13 在 Unity 中,在左侧的“层次结构”选项卡中选择“BackgroundMusic”游戏对象。

14 单击 Inspector 选项卡底部的添加组件。

15 选择 FMOD Studio > FMOD Studio 事件发射器。

16 将“Play Event”字段设置为“Object Start”。

17 单击“事件”字段旁边的搜索按钮。

18 在浏览器弹出窗口中,双击“事件”>“音乐”>“卡丁车音乐”。
请添加图片描述

玩游戏以听到播放的背景音乐。 正如你所听到的,这有效地复制了原始游戏的音乐播放。但是,您会发现背景音乐淹没了引擎的声音。
我们可以使用实时更新在FMOD中快速调整声音。这适用于 Unity 编辑器和独立构建。

19 在 Unity 窗口中,单击播放按钮并确保游戏正在运行。

20 在 FMOD Mixer 窗口中,单击窗口底部的 Live Update 按钮。

21 确保选择“localhost”地址。这使我们能够连接到与 FMOD Studio 在同一台机器上运行的游戏。

22 单击“连接”按钮。
请添加图片描述

请注意,窗口底部的“实时更新”按钮现在突出显示,混音器中的电平表显示游戏中听到的内容。
请添加图片描述

23 找到调音台上的音乐组。您可能需要向右滚动才能找到它。
请添加图片描述
向下拖动音量推子,将其设置为 -6dB。
请添加图片描述

音乐应立即降低音量。
实时更新可以快速迭代游戏的音频。
请添加图片描述
现在是尝试根据自己的喜好调整事情的好时机。例如,单击“音乐”组后,您会发现您可以在卡座中编辑声像和音高设置,或者添加 DSP 效果来更改声音质量。
请注意,如果断开实时更新的连接,则在退出播放模式时,Unity 中的音频将恢复到以前构建的状态。要提交更改,请在 FMOD Studio 中重建库。

3.7 删除现有音频

在开始添加 FMOD Studio 事件之前,最好删除项目中当前存在的预先存在的 Unity AudioSource。

1 导航到 FMOD > 设置向导,然后单击 Unity Sources 选项卡。从其列表中选择以下游戏对象以自动导航到它们(或者,可以在 Unity 编辑器的“层次结构”选项卡中找到这些对象):

a 游戏管理器/游戏HUD
b 背景音乐
c KartClassic_Player/ArcadeEngine音频/引擎空闲
d KartClassic_Player/ArcadeEngine音频/engine_start
e KartClassic_Player/ArcadeEngine音频/引擎运行
f KartClassic_Player/ArcadeEngine音频/引擎反转
g KartClassic_Player/街机引擎音频/漂移
请添加图片描述
2 对于这些游戏对象中的每一个:

a 选择游戏对象
v 单击右侧“检查器”窗格中“音频源”组件上的上下文菜单图标。
c 选择“删除组件”。

从 GameManager/GameHUD 对象中删除音频源将导致反馈 Flash HUD
脚本中出现错误。要解决这个问题,我们需要编辑FeedbackFlashHUD.cs。

3 选择 GameManager/GameHUD 对象。

4 向下滚动到“检查器”选项卡中的“反馈闪光 HUD”组件,然后单击上下文菜单图标。

5 选择“编辑脚本”,在默认代码编辑器中打开脚本文件。

6 删除所有包含 的行。m_audioSource

7 保存脚本并关闭文本编辑器。

还有一个 Game Flow Manager 组件,用于在通过最终检查点时创建 AudioSource
组件。为了摆脱这种情况,我们需要编辑GameFlowManager.cs。

8 选择 GameManager 对象。

9 向下滚动到 Game Flow Manager 组件,然后单击上下文菜单图标。

10 选择“编辑脚本”,在默认代码编辑器中打开脚本文件。

11 删除所有包含 的行。audioSource

12 保存脚本并关闭文本编辑器。

还有一些组件会调用(创建 AudioSource
组件)以在您撞到墙或通过检查点时播放声音效果。为了摆脱这些,我们需要编辑AudioUtility.cs。AudioUtility.CreateSFX

13 在窗口底部的“项目”选项卡中,导航到“AudioUtility”>“AudioUtility”>“Assets > Scripts > Utilities”。

14 双击 AudioUtility 脚本以在默认代码编辑器中将其打开。

15 删除函数的内容(第 19-29 行)。CreateSFX

16 保存脚本并关闭文本编辑器。

还有一个 Objective Toast 组件,用于在目标消息出现时创建 AudioSource
组件。为了摆脱这些,我们需要编辑ObjectiveToast.cs。

17 在窗口底部的“项目”选项卡中,导航到 ObjectiveToast > ObjectiveToast > > UI > Assets Karting Scripts。

18 双击 ObjectiveToast 脚本,在默认代码编辑器中将其打开。

19 删除除以 开头的行之外的所有包含的行。PlaySoundvoid PlaySound

20 保存脚本并关闭文本编辑器。

如果您再次玩游戏,警告将得到修复。但是,您可能会注意到起跑线声音继续播放。这些是由 Unity 时间线资源触发的,我们也可以将其删除。

21 在窗口底部的“项目”选项卡中,导航到 Assets > Karting > Timelines > RaceStart。

22 双击 RaceStart 资源以在编辑器中将其打开。请添加图片描述
在显示的“时间轴”选项卡中,单击“音轨”上下文菜单图标,然后选择“删除”。
请添加图片描述

再玩一次游戏。不应听到任何音频,也不应在“日志”选项卡中显示任何警告。

3.8 下一步

在本指南中,您学习了如何将 FMOD 添加到现有 Unity 游戏中。我们还替换并改进了游戏的声音,让世界感觉更加生动。

要了解有关 FMOD 和 Unity 的更多信息,请参阅以下资源:

  • 维京村 - 视频教程系列
  • 生存射击游戏 - 视频教程系列
  • FMOD Studio - 用户手册

10. 脚本 API 参考

FMOD Studio Unity Integration 以 C# 公开完整的 FMOD Core 和 Studio API。

Studio API 用于播放和控制在 FMOD Studio 工具中创建的事件。

核心 API 用于直接播放声音以及事件播放的高级控制。

运行时管理器 API 为编写使用 FMOD Studio 事件的 Unity 游戏组件时的最常见操作提供了帮助程序。

10.1 基础知识

初始化时,它会创建一个 和 一个 .您可以使用其中任何一个和/或所有这些来访问 API。

RuntimeManagerStudio SystemCore Systemvar studioSystem = FMODUnity.RuntimeManager.StudioSystem;
FMOD.Studio.CPU_USAGE cpuUsage;
studioSystem.getCPUUsage(out cpuUsage);var coreSystem = FMODUnity.RuntimeManager.CoreSystem;
uint version;
coreSystem.getVersion(out version);

10.2 Unity Inspector 中的浏览器 UI

您可以使用以下方法之一访问自定义 FMOD UI 以选择事件、库和全局参数:

10.2.1 事件

使用 EventReference 类型来保存对 Event 的引用。

public class EventReferenceTest : MonoBehaviour
{public FMODUnity.EventReference MyEvent;
}

您将看到以下 UI:
请添加图片描述

10.2.2 BANK

在用于保存 Bank 路径的任何字符串属性上使用属性“[FMODUnity.BankRef]”。

public class BankRefTest : MonoBehaviour
{[FMODUnity.BankRef]public string MyBank1;
}

您将看到以下 UI:
请添加图片描述

10.2.3 全局参数

在用于保存全局参数路径的任何字符串属性上使用属性“[FMODUnity.ParamRef]”。

public class ParamRefTest : MonoBehaviour
{[FMODUnity.ParamRef]public string MyParam1;
}

您将看到以下 UI:
请添加图片描述

11 FMOD 主页链接

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

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

相关文章

linux的持续性学习

安装php 第一步&#xff1a;配置yum源 第二步&#xff1a;下载php。 yum install php php-gd php-fpm php-mysql -y 第三步&#xff1a;启动php。 systemctl start php-fpm 第四步&#xff1a;检查php是否启动 lsof -i :9000 计划任务 作用&am…

设计模式- 责任链模式(行为型)

责任链模式 责任链模式是一种行为模式&#xff0c;它为请求创建一个接收者对象的链&#xff0c;解耦了请求的发送者和接收者。责任链模式将多个处理器串联起来形成一条处理请求的链。 图解 角色 抽象处理者&#xff1a; 一个处理请求的接口&#xff0c;可以通过设置返回值的方…

SpringBootWeb 篇-深入了解 Redis 五种类型命令与如何在 Java 中操作 Redis

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Redis 概述 1.1 Redis 下载与安装 2.0 Redis 数据类型 3.0 Redis 常见五种类型的命令 3.1 字符串操作命令 3.2 哈希操作命令 3.3 列表操作命令 3.4 集合操作命令 …

Webpack 从入门到精通-基础篇

一、webpack 简介 1.1 webpack 是什么 webpack 是一种前端资源构建工具&#xff0c;一个静态模块打包器(module bundler)。 在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。 它将根据模块的依赖关系进行静态分析&#xff0c;打包生成对应的…

【深度学习】【机器学习】支持向量机,网络入侵检测,KDD数据集

文章目录 环境加载数据归一化数据训练模型用测试数据集给出评估指标准确率召回率预测某个输入数据随便取一行数据加载训练好的SVM支持向量机模型并预测 全部数据和代码下载 环境 之前介绍过用深度学习做入侵检测&#xff0c;这篇用向量机。 环境Python3.10 requirements.txt…

Vuex3学习笔记

文章目录 1&#xff0c;入门案例辅助函数 2&#xff0c;mutations传参辅助函数 3&#xff0c;actions辅助函数 4&#xff0c;getters辅助函数 5&#xff0c;模块拆分6&#xff0c;访问子模块的state辅助函数 7&#xff0c;访问子模块的getters辅助函数 8&#xff0c;访问子模块…

虚拟机调用摄像头设备一直 select timeout问题的解决

在VMware里面调用v4l2-ctl捕获图像&#xff0c;或者opencv的VideoCapture(0)捕获图像&#xff0c;或者直接调用v4l2的函数&#xff0c;在streamon后&#xff0c;调用select读取数据&#xff0c;均会一直提示select timeout的问题&#xff0c;大概率是由于USB版本的兼容性造成的…

每日5题Day21 - LeetCode 101 - 105

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; class Solution {public boolean isSymmetric(TreeNode root) {if(root null){return true;}Stack<…

类和对象(下+)_const成员、初始化列表、友元、匿名对象

类和对象&#xff08;下&#xff09; 文章目录 类和对象&#xff08;下&#xff09;前言一、const成员二、友元1.友元函数2.友元类 三、初始化列表四、explicit关键字五、匿名对象总结 前言 static成员、内部类、const成员、初始化列表、友元、匿名对象 一、const成员 将cons…

网络安全难学吗?2024该怎么系统学习网络安全?

学习网络安全需要循序渐进&#xff0c;由浅入深。很多人对网络安全进行了解以后&#xff0c;就打算开始学习网络安全&#xff0c;但是又不知道怎么去系统的学习。 网络安全本身的知识不难&#xff0c;但需要学习的内容有很多&#xff0c;其中包括Linux、数据库、渗透测试、等保…

excel拖拽怎么使单元格序号不递增

拖拽下来不仅不递增&#xff0c;而且右下角没有倒三角可以设置改变&#xff0c;&#xff08;即没有下图这个&#xff09; 则&#xff0c;可以采用以下方法 excel数值拖拽不递增还有一个更快更快捷的方法&#xff0c;这就运用到了excel快捷键&#xff0c;我们把鼠标放到单元格的…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二)

在自动驾驶中&#xff0c;对车辆外界环境进行感知需要用到很多传感器的数据&#xff08;Lidar&#xff0c;Camera&#xff0c;GPS/IMU&#xff09;&#xff0c;如果计算中心接收到的各传感器消息时间不统一&#xff0c;则会造成例如障碍物识别不准等问题。 为了对各类传感器进…

consul做配置中心

1. 分布式配置中心 consul不仅可做注册中心&#xff0c;还可做配置中心 applicaiton.yml与bootstrap.yml: applicaiton.yml是用户级的资源配置项bootstrap.yml是系统级的&#xff0c;优先级更加高 Spring Cloud会创建一个“Bootstrap Context”&#xff0c;作为Spring应用…

ReactRouter——路由配置、路由跳转、带参跳转、新route配置项

目录 写在前面 (一)初步使用router 1.安装react-router-dom 2.创建router结构 3.嵌套路由 4.配置not found页面 (1)确切路由报错页面 (2)未配置路由报错页面 5.重定向 (二)路由跳转 1.组件跳转 2.NavLink 3.js跳转 (三)传递参数 1.searchParams(query)参数 2…

kafka集成SpringBoot api编写教程

1.新建项目 用的idea是20222.1.3版本&#xff0c;没有Spring Initializr 插件&#xff0c;不能直接创建springboot项目 可以在以下网址创建项目&#xff0c;下载后解压&#xff0c;然后用idea打开项目即可 1.1 在 https://start.spring.io/ 上创建项目 1.2上传到linux&#x…

10.2 Go Channel

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Letcode-Top 100二叉树专题

94. 二叉树的中序遍历 方法一&#xff1a;递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeN…

【python】在【机器学习】与【数据挖掘】中的应用:从基础到【AI大模型】

目录 &#x1f497;一、Python在数据挖掘中的应用&#x1f495; &#x1f496;1.1 数据预处理&#x1f49e; &#x1f496;1.2 特征工程&#x1f495; &#x1f497;二、Python在机器学习中的应用&#x1f495; &#x1f496;2.1 监督学习&#x1f49e; &#x1f496;2.2…

第1章Hello world 3/5:Cargo.lock:确保构建稳定可靠:运行第一个程序

讲动人的故事,写懂人的代码 1.6 Cargo.lock:确保构建稳定可靠 “看!”席双嘉一边指着屏幕一边说,“终端窗口提示符的颜色,从绿变黄了。这就意味着代码在上次提交后有点变化。” 赵可菲:“但是我们只是运行了程序,代码应该没动呀。” 席双嘉敲了下git status -uall,这…

计网总结☞网络层

.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口&#xff08;Wide Area Network port&#xff09;&#xff1a; 1)用于连接外部网络&#xff0c;如互联…