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 event
            float 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 System

var 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 主页链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年6月12日 (周三) 叶子游戏新闻

万能嗅探: 实测 网页打开 某视频号、某音、某红薯、某站&#xff0c;可以做到无水印的视频和封面下载功能哦&#xff0c;具体玩法大家自行发挥吧。 WPS免登录一键修改器: 去除烦人的登录且能正常使用 杨奇试戴《黑神话&#xff1a;悟空》豪华版金箍 效果还不错&#xff01;最近…

181.二叉树:验证二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

3-哈希表-71-三数之和-LeetCode15

3-哈希表-71-三数之和-LeetCode15 参考&#xff1a;代码随想录 LeetCode: 题目序号15 更多内容欢迎关注我&#xff08;持续更新中&#xff0c;欢迎Star✨&#xff09; Github&#xff1a;CodeZeng1998/Java-Developer-Work-Note 技术公众号&#xff1a;CodeZeng1998&#xff…

【人工智能】文本提取技术的算法延伸

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 文本提取技术中用到的算法 TF-IDF&#xff08;Term Frequency-Inverse Document Frequency…

数据分类分级,误把起点当终点

数据分类分级 吉祥学安全知识星球&#x1f517;除了包含技术干货&#xff1a;Java代码审计、web安全、应急响应等&#xff0c;还包含了安全中常见的售前护网案例、售前方案、ppt等&#xff0c;同时也有面向学生的网络安全面试、护网面试等。 01 — 数据分类分级的定义 数据分…

Tuxera NTFS for Mac 2023软件:超级详细安装步骤(最新版软件下载)

软件简介&#xff1a; 在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件。当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。…

论文Abstract怎么写

摘要是你要写的最后一项内容 步骤 首先先通读自己的文章&#xff0c;清楚自己写的文章是研究型还是技术型&#xff0c;适合描述性的摘要还是知识性。 描述性摘要内含研究目的、目标及方向等&#xff0c;不讲研究结果。字数大约100-200字。知识性摘要则包含研究结果&#xff0c…

语法05 C++ 浮点型/实数类型

什么是实数类型 实数类型是一种数据类型&#xff0c;实数类型变量里能存放小数和整数。 定义格式&#xff1a;double a; 赋值&#xff1a;a0.4; 输入&#xff1a;cin>>a; 输出&#xff1a;cout<<a; 训练&#xff1a;尺子的价格 小知在文具店买铅笔&#xff…

如何用Vue3构建一个交互式音乐播放器

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue.js 开发音乐播放器卡片 应用场景 这款音乐播放器卡片旨在为音乐应用程序提供一个现代而交互式的用户界面。它包含诸如歌曲信息、播放进度条和控制按钮等关键功能。 基本功能 **歌曲信息显示&#xff1a…

The Sandbox 游戏创作比赛|巴黎 CITY JAM

The Sandbox City Jam 邀请大家参与 The Sandbox 全新 Game Jam&#xff1a;City Jam&#xff01;活动将以社区为中心&#xff0c;每次一个城市&#xff0c;旨在将国际文化带入The Sandbox。你可以通过参与比赛赢得奖品&#xff0c;发展技能&#xff0c;并与其他创作者为伴&…

国标GB28181安防视频监控EasyCVR平台级联时上级平台不显示通道是什么原因?

国标GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快&#xff0c;可支持的主流标准协议有GA/T 1400、国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。 有用户反馈&#xff…

【大模型应用开发极简入门】提示工程一:1. 通过context、task、role文本结构设计有效的提示词、 2. OpenAI的提示词任务示例

文章目录 一. chat_completion函数二. 设计有效的提示词1.上下文1.1. 更多细节的上下文1.2. 让GPT改进上下文 2.任务2.1. 提供足够的任务信息2.2. OpenAI的任务示例语法纠正总结TL;DR概要Python转自然语言计算时间复杂度修复Python bug产生python函数 3.角色 了解LLM和OpenAI A…

IEOSE 2024北京国际教育留学海外院校展览会11月举办

IEOSE 2024北京国际教育留学展览会 IEOSE 2024 Beijing International Education and Overseas Study Exhibition 2024年11月15日-11月17日&#xff08;周五-周日&#xff09; 15th-17th November, 2024 北京国家会议中心 China National Convention Ce…

【Three.js】知识梳理十:Three.js纹理贴图

1. 纹理贴图 在Three.js中&#xff0c;纹理贴图是一种将二维图像贴到三维物体表面的技术&#xff0c;以增强物体的视觉表现。纹理贴图可以使物体表面更加真实、细腻&#xff0c;为场景增色不少。 在Three.js中&#xff0c;纹理贴图的加载主要通过THREE.TextureLoader类实现。…

LeetCode | 26.删除有序数组中的重复项

在我接触到这道题的时候想的就是一次遍历&#xff0c;设置两个变量记录当前遍历到的数字和对应原数组应该修改的index&#xff0c;在运行过程中&#xff0c;因为原数组已经是有序的了&#xff0c;只不过会存在重复的数字&#xff0c;但是这些重复的数字也是挨在一起的&#xff…

RT-Thread系统使用STM32H7芯片串口5不工作

使用stm32h743芯片串口5不工作&#xff0c;其他串口都正常&#xff0c;TX5->PC12,RX5->PD2 drv_usart.c里面串口5的TX和RX反了&#xff0c;将TX和RX对调后解决。

opencv学习笔记 -- 如何扫描图像

本节主要解决以下几个问题&#xff1a; 如何遍历图像的每一个像素如何存储opencv的矩阵如何衡量算法的性能查询表是什么并且为何要使用该表 举一个例子 如果是使用RGB的格式&#xff0c;数据格式采用unsigned char来进行储存&#xff0c;则每个像素点有256个不同的值&#x…

如何给自己的项目实现在线测试的接口文档knife4j

配置实现Knife4j在线接口测试文档 为什么要是实现这个东西呢&#xff1f;肯定是对我们有用的&#xff0c;后端主要编写的就是接口&#xff0c;然后我们将接口编写好了之后肯定还是需要进行调试看是否能够正常使用且按照规范返回对应的数据。相信大家测试都是基本上使用的是一些…

【紧急警示】Locked勒索病毒利用最新PHP远程代码执行漏洞大规模批量勒索!文末附详细加固方案

1. Locked勒索病毒介绍 locked勒索病毒属于TellYouThePass勒索病毒家族的变种&#xff0c;其家族最早于2019年3月出现&#xff0c;擅长利用高危漏洞被披露后的短时间内&#xff0c;利用1Day对暴露于网络上并存在有漏洞未修复的机器发起攻击。该家族在2023年下半年开始&#xf…

【CS.PL】Lua 编程之道: 基础语法和数据类型 - 进度16%

2 初级阶段 —— 基础语法和数据类型 文章目录 2 初级阶段 —— 基础语法和数据类型2.0 关键字(keywords) &#x1f525;2.1 注释与标识符2.1.1 注释2.1.2 标识符 2.2 变量与赋值2.2.1 所有变量默认是全局变量 ≠ local, 有一个例外2.2.2 local变量是局部变量, 以end作为边界2.…