Unity Audio

news2024/12/23 20:27:33

这章练习将介绍在unity中创建 audio(音频)的工具,培养的技能将帮助创建引人入胜的音频音景。完成本次学习后,能够使用 Unity 中的所有主要音频组件,为各种不同体验创建音频效果。

音频处理工具:

Audacity (https://www.audacityteam.org/):一款开源音频应用程序,可让您录制和编辑音频效果。它对于对现有声音进行细微编辑特别有用。
Beepbox (https://www.beepbox.co):一款用于创作乐器旋律的免费在线工具。

Unity中音频的工作方法

Unity 中的音频都是关于两个组件之间的交互:音频监听器(audio listener)和音频源(audio source)。

音频监听器在交互式体验中充当用户的耳朵。监听器是被动组件,会自动包含在摄像头中。监听器与摄像头相关联,因为摄像头在交互式体验中代表用户的眼睛,将用户的耳朵与摄像头配对是有意义的。只要音频监听器进入音频源的范围,音频源就会播放指定的音频片段。一个场景中只能有一个音频监听器,因此额外的摄像头需要移除它们的监听器
 

音频源是场景视图中保存音频文件的组件。它们定义声音的可听范围以及音频侦听器如何感知声音。场景中允许的音频源数量没有限制,因此每个需要发出声音的对象都可以有一个。

Unity 能够处理以下音频格式:MPEG(由运动图像专家组开发);Ogg Vorbis - 开源通用音频; WAV(波形音频文件)-由微软和 IBM 开发; AIFF(音频交换文件格式)- 由 Apple 开发。

创建动态音效

通过为玩家角色添加脚步声效果来开始创建复杂音景的过程:

  • 选择基于时间或基于动作的方法,例如触发器或事件来播放音频片段。
  • 解释音频在营造氛围中的作用。

玩家脚步声

1. 下载附件,解压后在unity hub中打开该项目文件 creativecore_audio_2022;

2. 在unity中打开项目文件后,在Project窗口中 Assets>CreativeCore_Audio>Scenes,打开 Audio_Outdoor_Scene 场景文件;

3. 打开后,运行游戏,在游戏窗口中使用 WASD 按键,在场景中漫游,但没有听到任何脚步声;

添加走路的声音事件

4. 导航至 Animator Controller 的 Animations 文件夹:Assets> CreativeCore_Audio > StarterAssets > ThirdPersonController >Character> TutorialAnimations, 选择 Locomotion--Walk_N动画;

5. 在右边 Inspector 窗口中,选择 Animation 选项卡,然后展开下面的 Events 属性,并将最底部的Walk_N动画预览窗口恢复

Events 属性部分包含一个小的时间轴和可以发送的不同类型数据的列表,但直到您添加第一个事件之前,这些数据仍将保持灰色且不可用

预览Walk_N动画,看到在 Frame 9 (即第9帧)时左脚落地

6. 在Events 属性,点击最左侧 Add Event 按钮,这是 function 右边的编辑窗口激活,自动填充"NewEvent"名称,改名字为 “PlayStep”,本教程后面的脚本中会引用此参数,因此请务必按此处所示准确拼写和大小写。

7. 继续预览Walk_N动画,看到在Frame 24 (即第24帧)时右脚落地,然后在Events 属性,再次点击最左侧 Add Event 按钮,保持PlayStep名字不变,然后点击 Apply 按键,将两个Events 保存到动画中。

添加跑步的声音事件

8. 在文件夹:Assets> CreativeCore_Audio > StarterAssets > ThirdPersonController >Character> TutorialAnimations, 选择 Locomotion--Run_N动画,开始设置跑步的动画 Events;

9. 重复上面第 5 步,选择 Animation 选项卡,再选择窗口中Events 属性,在下方Run_N动画预览窗口中,拖动动画播放线,大概在Frame 6 (第6帧)时,跑步的左脚着地,这时点击Events 属性下最左侧 Add Event 按钮,添加 “PlayStep” 事件;

10. 再次回到下方动画预览窗口,继续拖动动画播放线,大概在Frame 17 (第17帧)时,跑步的右脚着地,这时点击Events 属性下最左侧 Add Event 按钮,添加 “PlayStep” 事件,然后点击下方的 “Apply” 按键,将两个 PlayStep时间添加到动画。

添加跳跃的声音事件

11. 在文件夹:Assets> CreativeCore_Audio > StarterAssets > ThirdPersonController >Character> TutorialAnimations, 选择 Jump--Jump 动画,开始设置跳跃的动画 Events;

12. 注意该Jump动画包含两段:JumpStart和JumpLand,选择JumpLand动画来设置;

13. 仿照上述步骤 9 和 10, 找到跳跃动画中脚落地的帧,再在Events属性中添加 “PlayStep”事件,跳跃是双脚着地,只有 1 个事件。

添加脚步控制脚本

14. 文件夹:Assets> CreativeCore_Audio >Scripts 中选择 FootstepManager 脚本,将该脚本拖到 Hirarchy窗口中 PlayerArmature 游戏物件上,在选择 PlayerArmature 后,该FootstepManager 脚本会在右方的Inspector窗口下方显示

15. 在 FootstepManager脚本下方,点击 Add Component 按键,选择 Audio Source 加入到 PlayerArmature 的属性

16. 点击同一个窗口中  FootstepManager脚本, 可以看到下方有三个类别脚步, Grass Steps, Water Steps, Cave Steps,分别对应在3种地面上的脚步声音。

设置地面Tag

17. 在左方的Scene 场景中选择Grass,然后在右方Inspector 窗口中,点击Tag 边的下拉菜单,可以看到Grass tag,选择该 Tag,标志该游戏物件为Grass;

18. 同样操作,分别选择Scene场景中的 Water 和 Cave,再在Inspector 窗口中分别设置 Water 和 Cave 的tag。

添加声音列表

19. 点击 Hierarchy窗口中 PlayerAmature 游戏物件,然后在选择 Project 窗口中 Assets> CreativeCore_Audio >Audio 打开该文件夹,可以看到声音文件;

20. 在右侧 Inspector窗口中,打开Footstep Manager(script)属性,再在上面Audio文件夹中选择Grass,water, cave中各一个声音文件,添加到右侧Grass Steps, Water Steps, Cave Steps中,如下图所示

hint:拖拽1个声音文件,例如grassstep1,将该文件拖到 Grass Steps的文字上,这个声音文件会自动加到下面的列表中

21. 添加完上述3个文件后,可以点击 Play 按键测试游戏,在游戏窗口中,按 WASD 按键控制漫游,空格键激发跳跃动作,走路的时候可以听到对应的脚步声,在不同地面(例如Grass和 Water)上有不同的声音.

hint. 如果觉得声音比较单调,可以将Audio文件夹中的声音文件都添加到 Footstep Manager 脚本中,如下图所示,这样声音会稍有变化。

创建3D声音效果

声音的大小和品质是随着距离大小而改变的,例如远处听到的声音小,近处听到的声音大。声音的传播也是3D的,从耳朵外不同角度传来的声音,感觉的效果也不一样。

这节练习将设置场景中的水流瀑布声音,尤其是设置声音传导的规律和速度,让你有身临其境的感受。

添加水流声音

22. 在Hirarchy窗口中,点击鼠标右键,在弹出的菜单中选择 Audio > Audio Source, 将名字改为 Waterfall Audio;

23. 在左侧Scene窗口中,将刚才添加的Audio Source移动到水流瀑布的底端(与水池接触的地方);

24. 在Project 窗口中,选择Assets>CreativeCore_Audio>Audio 文件夹,选中第一个声音文件,拖拽到右侧Inspector窗口中 Audio Source属性下的AudioClip右边的编辑框中,添加该声音文件到该Audio Source,同时将下方 Loop边的编辑框勾选,使得声音文件能够重复播放,最终设置如下图所示:

25. 点击窗口中正中间上方的 Play 按键,运行游戏后,就可以听到水流瀑布的声音了。但是这个声音缺少3D效果,走到瀑布近处的时候,声音声量没有任何变化,像个背景水流噪声。

退出游戏,下面开始设置声音的3D效果。

26. 将Audio Source属性下Spatial Blend 参数设置的滑杆移动到最右端,即3D,然后在下方3D Sound Settings中将Min Distance 值 2, Max Distance 值 20,可以看到最下端的曲线图框变化,日下图所示:

27. 再次运行游行,一开始可能没有听到水流瀑布声音,操作玩家导航到水流瀑布的地方,可以感受到水流瀑布声音逐渐变大。可以在游戏运行的时候,更改Max Distance 值为 40,在操纵玩家,可以发现在更远处可以听到声音了。

28. 可以尝试更改不同的 Min Distance 和 Max Distance 的值,感受一下声音大小随距离变化。尝试后,退出游戏。

声音传播衰减方式设置

Unity 提供了三种声音传播衰减的方式 Logarithmic Rolloff, Linear Rolloff, Custom Rolloff, 选择其中一种衰减方式,下方图框中就有不同形状的红线,显示声音音量随距离衰减的不同形式。

Logarithmic Rolloff

Logarithmic Rolloff,声音衰减设置一般用于环境声音。

29. 设置 Colume Rolloff 的下拉列表,选择 Logarithmic Rolloff, 设置 Max Distance 值为500,可以看到如下红线图像,显示音量在短距离就衰减的很快。再次运行游戏,感受一下水流声音大小随距离瀑布位置的变化

30. 将Max Distance值改为20,可以看到上述红色曲线衰减不是那么快了,竖着的红线表示Audio Listenser的位置,当玩家里瀑布距离越近时,图中竖着的红线接近曲线的最高点时,声音音量逐渐变大,在到达最高点时音量最大;当玩家里瀑布距离越远时, 图中竖着的红线逐渐向右,过了水平蓝线与曲线的交点后,声音就听不到了。

31. 设置不同的Min Distance 和 Max Distance 的值,在操纵玩家在场景中导航,感受瀑布水流声音的变化。最后退出游戏。

Linear Rolloff

Linear Rolloff,声音衰减设置一般用于引起玩家需要注意的声音,因为声音音量与距离的线性变化。

32. 设置 Colume Rolloff 的下拉列表,选择 Linear Rolloff, 可以看到如下红色线性曲线。

33. 点击Play按键,运行游戏后,可以发现水流瀑布声音变化随着玩家距离变化会比原先显著。

34. 尝试设置不同的Min Distance 和 Max Distance 的值,在操纵玩家在场景中导航,感受瀑布水流声音的变化。最后退出游戏。

Custom Rolloff

用户定制声音衰减设置给与设置用户想要听到的声音变化。

35. 设置 Colume Rolloff 的下拉列表,选择 Custom Rolloff, 可以看到红色线性曲线上有一些可以拖拽的点。可以通过拖拽这些点的位置,改变曲线的形状;拖拽这些点高亮后出现的横线方向,可以改变该点曲线的正切值。

36. 也可以选择上述红色曲线时点击鼠标右键,弹出 “Add Key”,添加关键点,给予更多的变化。

37. 运行游戏,自由更改上述红色曲线形状,感受声音随玩家距离的变化。最后退出游戏。

更改Audio Listener位置

在上述听流水瀑布的时候,会发现声音和玩家的位置有点不匹配(例如,玩家到瀑布时所听到的声音没有达到最大声,在穿过瀑布后,声音才达到最大)。这是因为audio listener放在主摄像头(main camera),不是放在玩家身上。由于main camera 始终在玩家的后上方(即第三视角),与玩家之间有一定距离,因此造成声音延迟。

38. 在Hierarchy窗口中选择 MainCamera,在右侧Inspector中找到Audio Listener属性,点击其右侧的三点按钮,在弹出菜单中选择“Remove Component";

39. 在 Hierarchy 窗口中选择 PlayerAmature,在右侧 Inspector 窗口的最下方,点击"Add Component"按键,添加 Audio Listener.

40. 点击play按键,运行游戏,这时可以查看一下声音是否有延迟,最后退出游戏。

创建混响(Reverb)声音

混响区(Reverb Zones) 获取音频剪辑并根据音频监听器在混响区内的位置使音频剪辑失真。从没有环境效果的点逐渐到有环境效果的点(例如进入洞穴时),便可使用混响区.

下面的练习将设置瀑布后的洞穴的混响设置。下图显示了一个声音混响的示意图,声音在墙壁的回声和生源的声音混在一起。

参考:混响区 - Unity 手册

Audio Reverb Zone

41. 在Hierarchy 窗口中,点击鼠标右键,在菜单中选择 Audio> Audio Reverb Zone, 添加的reverb zone命名为"Cave Reverb";

42. 将这个新建的 Cave Reverb 移到瀑布后面的洞穴中心,设置其 MinDistance 和 MaxDistance值,使得内圈尽量包含洞穴内壁,外圈包含洞穴外部(重点时覆盖洞穴的入口部分外缘),如下图所示:

43. 继续在Inspector窗口中,设置Audio Reverb Zone中 ReverbPreset 边的下拉列表中选择 ”Cave“;

44. 点击play按键开始游戏,导航玩家到瀑布,听到流水声音变化,穿过瀑布到洞穴后,走路声音在洞穴中有回声。为测试回声效果,可以将 Cave Reverb 关闭,听一下声音效果,然后再将 Cave Reverb 激活,比较两种情况下再洞穴中的声音效果 (大家的音箱要高级一点,听到的声音效果更明显:) )。

45. 测试其他的混响效果,在ReverbPreset 边的下拉列表中选择 ”Padded Cell“, 听一下走路的声音;再从下拉列表中选择 ”Stone Corridor“, 然后再听一下走路的声音,比较一下声音有什么不同。

46. 尝试其他选项, 尝试完了之后,退出游戏。

洞穴内水滴声音

47. 在Hierarchy窗口中点击鼠标右键,添加Audio>Audio Source, 命名为 ”Cave Water Drops“,将这个audio source拖放到洞穴内部;

48. 将Assets>CreattiveCore_Audio>Audio文件夹中的 WaterDroplets 拖放到上述 Cave Water Drops 的AudioClip的编辑框中,设置了声音源文件;

49. 激活Loop,设置Priority 的值为100 (默认值时128, 值越小,重要性越高),设置Spatial Blend 为3D;

50. Volume Rolloff下拉列表中选择" Linear Rolloff", 设置 Min Distance and Max Distance 的值覆盖洞穴的内部空间;

参数设置如图所示:

50. 运行游戏,将玩家导航到洞穴中,可以听到洞穴内水滴的声音。可以尝试将水流瀑布的声音关闭一下,这样脚步声和水滴声就比较显著了。测试完后,退出游戏。

混音器(Audio Mixer)

Unity 混音器 (Audio Mixer) 允许混合各种音频源,对音频源应用效果,以及执行母带制作 (mastering)。混音器组本质上是音频的混合,即一个允许您应用音量衰减和音高校正的信号链;混音器组允许您插入用于处理音频信号的效果,并允许更改效果参数。此外还有在母线之间传递结果的发送和返回机制。

参考:混音器 - Unity 手册

51. 打开混音器界面,选择顶部菜单 Window > Audio > Audio Mixer, 在界面上选择 + 按键新建一个混音器,命名为“Master”,其将包含所有包含在场景中的音频。(可以将混音器窗口跟Scene窗口并列)

52. 在上述界面 Groups 部分,选择 + 新建一个新组,命名为“Water”,准备包含场景中的水流瀑布声音和洞穴内的水滴声音。

53. 在Hierarchy窗口中选择 Waterfall Audio,再在右边Inspector窗口中,Audio Source部分的 Output 属性,点击其右边的 选择按键,在弹出窗口中双击 Water,将  Waterfall 音频加入到混音器中。

54. 运行游戏,操纵玩家到洞穴中,可以听到水滴和瀑布声音。这是点击Audio Mixer界面中的 Edit in Play Mode,可以定制water混音,例如改变声音大小,也可以在右边Inspector窗口的下方,点击 Add Effect,添加其他的混音参数,如下图

audiomixer

55. 可以尝试添加不同的混音效果,直到自己满意为止后,退出游戏。

音频的可访问性注意事项

在下面的练习中,将学会:

  •     向 Unity 项目添加字幕。
  •     在给定目标平台的情况下,推荐音频优化技术。
  •     选择基于时间或基于操作的方法,例如触发器或事件来播放音频剪辑。
  •     向场景添加特殊音频效果。

添加字幕

CCDatabase

56. 在Project窗口选择 Assets>Creativecore_Audio>ClosedCaptionSystem>Data, 在打开的文件夹中选中CCDatabase,点击鼠标右键,在弹出菜单中选择Rename;

57. 改名称为“Waterfall Scene Database”后,再双击该文件,打开CCDatabaseEditor窗口,默认窗口尺寸可能较小,可将窗口左右尺寸拉大一些;

58. 再打开的窗口中或许已经有了AmbientWaterfall 项,(如果没有的话,再Project窗口选择 Assets>Creativecore_Audio>Audio 文件夹中将 AmbientWaterfall 音频拖入到CCDatabaseEditor窗口)

59. 点击AmbientWaterfall 项,选择右侧 New Line按键,在编辑框中输入 “Water rushing" 后按一下键盘上的 Enter 按键;

60. 关闭 CCDatabaseEditor窗口,现在已经建立了一个 Closed Caption Database,下一步需要将其放到项目的prefab 预制件。

CCSystem

61. 在Project窗口中选择 Assets > CreativeCore_Audio > ClosedCaptionSystem > Prefabs > System 文件夹,将其中CCSystem 预制件拖拽到Hierarchy窗口中;

62. 选中该CCSystem, 在右侧Inspector窗口中的CCManager(Script)部分,点击Database右侧的选择按键,在弹出窗口中选择上述 ”Waterfall Scene Database“;再点击 Tracked For Pos 右侧的选择按键,在弹出窗口中选择”Main Camera“;

在游戏物件上添加字幕

63. 在Hierarchy窗口中选择 Waterfall游戏物件,再在右侧Inspector窗口中点击最下端 Add Component按键,在弹出菜单中选择CCSource(Script)选项

64. 然后将Project窗口中,Assets > CreativeCore_Audio > ClosedCaptionSystem > Prefabs > System 文件夹中 CCCanvas拖拽到 CCSource(Script) 属性中Cavas Prefab右侧的编辑框中,然后设置Max Distance 为15;

65. 运行游戏,导航玩家到流水瀑布的前方,查看 ”Water rushing"字幕是否显示,也可以动态调整 Max Distance值,或者调整一下字幕的位置,方便查看;

66. 激活 CCSource(Script) 属性中 Always Tracked,场景中将出现一个三角形的方向指示标志,指向水流声音的位置。

67. 测试完后,退出游戏。

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

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

相关文章

Mintegral出海系列:解锁全球应用商店新增长路径

在全球化竞争的浪潮中,面对打法各异的应用和游戏品类,以及全球数百个环境不同的国家和地区,开发者们正面临着前所未有的挑战。Mintegral「出海ing」系列专题内容,助力出海开发者选准赛道探索新的增长路径。 据近期数据显示&#x…

LLM微调(精讲)-以高考选择题生成模型为例(DataWhale AI夏令营)

前言 你好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,上一篇文章中,作者介绍了基于讯飞开放平台进行大模型微调的完整流程;而在本文中,作者将对大模型微调的数据准备部分进行深入;…

凤凰端子音频矩阵应用领域

凤凰端子音频矩阵,作为一种集成了凤凰端子接口的音频矩阵设备,具有广泛的应用领域。以下是其主要应用领域: 一、专业音响系统 会议系统:在会议室中,凤凰端子音频矩阵能够处理多个话筒和音频源的信号,实现…

Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能

Luminar Neo,这款由Skylum公司倾力打造的图像编辑软件,为Mac和Windows用户带来了前所未有的创作体验与编辑便利。作为一款融合了先进AI技术的图像处理工具,Luminar Neo以其独特的功能和高效的操作流程,成为了摄影师、设计师及摄影…

使用Sanic和SSE实现实时股票行情推送

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

【Next】全局样式和局部样式

不同于 nuxt ,next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件,存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …

业界首个OpenTelemetry结合eBPF的向导式可观测性平台APO正式开源

AutoPilot Observability (简称APO)是什么? 开箱即用的可观测性平台:APO 致力于提供一键安装、开箱即用的可观测性平台。APO 的 OneAgent 支持一键免配置安装 Tracing 探针,支持采集应用的故障现场日志、基础设施指标、应用和下游…

主机防火墙IPV6 域名 测试环境搭建及测试方法

由于国内当前网站支持ipv6的很少,部分支持ipv6 的网站由于路由器的限制,也无法直接访通过ipv6进行访问,因此进行主机防火墙ipv6域名测试时,需要自己搭建环境进行测试,以下为搭建环境的步骤。 1 . 搭建DNS服务器 环境:安装有python,系统为Windows Server 2016 DNS服务…

【Vue3】vue模板中如何使用enum枚举类型

简言 有的时候,我们想在vue模板中直接使用枚举类型的值,来做一些判断。 ts枚举 枚举允许开发人员定义一组命名常量。使用枚举可以更容易地记录意图,或创建一组不同的情况。TypeScript 提供了基于数字和字符串的枚举。 枚举的定义这里不说了…

haproxy最强攻略

1、负载均衡 负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。 负载均衡的主要作用如下: 高并发…

接入谷歌支付配置

1.谷歌云创建项目 网址:https://console.cloud.google.com/ 按照步骤创建即可 创建好后选择项目,转到项目设置 选择服务账户,选择创建新的服务账户 名称输入好后访问权限吗账号权限都可以不用填写,默认就好了 然后点击电子邮…

爵士编曲:Bass编写,Walking Bass,SwingBass 爵士鼓 Swing Jazz律动 Moonkits

Walking Bass Line是乐曲构造中的基垫,“Walking”是在BassLine中的一种重要的感觉构成,等同于我们对于“行走”的理解,意义就是“一步接着一步”,先从每一步(每一小节)建立,并持续构建成一个完…

Android 10.0 SystemUI下拉状态栏QSTileView去掉着色效果显示彩色图标功能实现

1.前言 在10.0的系统rom定制化开发中,在关于SystemUI的下拉状态栏中QSTileView的背景颜色设置过程中,在由于 系统原生有着色效果,导致现在某些彩色背景显示不是很清楚效果不好,所以需要去掉QSTileView的默认着色 背景显示原生的彩色背景,接下来就来实现相关功能 如图: 2.…

【微信小程序】实现中英文切换

1、组织语言资源 创建两个文件夹,分别用于存放中文和英文的语言资源。例如,可以在 utils 文件夹下创建 lang 文件夹,然后在其中创建 zh.js 和 en.js 文件,分别存放中文和英文的文本内容。 zh.js: const zh {home: {title: 这里…

【人工智能】全景解析:【机器学习】【深度学习】从基础理论到应用前景的【深度探索】

目录 1. 人工智能的基本概念 1.1 人工智能的定义与发展 1.1.1 人工智能的定义 1.1.2 人工智能的发展历史 1.2 人工智能的分类 1.2.1 弱人工智能 1.2.2 强人工智能 1.2.3 超人工智能 1.3 人工智能的关键组成部分 1.3.1 数据 1.3.2 算法 1.3.3 计算能力 2. 机器学习…

大模型系列6--神经网络(WIP)

神经网络 1. 背景2. 理论知识2.1. 单个神经元2.1.1. 基础2.1.2. 神经元激活代码 2.2. 多个神经元2.2.1. 基础2.2.2. 神经元激活代码2.2.3. 反向传播 3. 神经网络编程基础3.1. 基本概念3.2. 逻辑回归3.3. 梯度下降法(Gradient Descent)3.3.1. 基础知识3.3.2. 梯度下降的形式化说…

Selenium + Python 自动化测试09(多窗口切换)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了截图的操作方法,本篇文章我们讲述一下多窗口切换的操作方法。 在实际的测试项目组中我们可能会遇到多窗口的情况,有时候需要在不同窗口…

MyBatis 配置与测试方式

目录 一,什么是MyBatis 二,准备工作 创建项目 配置数据库连接 持久层代码 单元测试 一,什么是MyBatis 简单来说,MyBatis 是一款优秀的持久层框架,用于简化JDBC的开发,能更简单完成程序与数据库之间…

MySQL 复制建表、操作补充、pymysql操作—/—<10>

一、复制建表 1、复制其他表的结构 只复制结构,不复制值 CREATE TABLE aaa LIKE student student表: 复制完的a表: 2、复制查询结果并建表: create table a (select id,sum(score) as sum_sco from score group by id) score表结构如图所…

【存储学习笔记】3:备份(Backup)技术分类

1 定义 备份:出于数据恢复的目的而创建一份额外的数据副本。 2 技术指标 2.1 备份窗口(Backup Window) 从定指标的角度:可以安全地实施备份的时间 从实现指标的角度:备份操作所需的时间 2.2 恢复时间目标&#xf…