当前位置: 首页 > wzjs >正文

微网站自助建设百度一下网页搜索

微网站自助建设,百度一下网页搜索,河南卓越建设工程有限公司网站,使用网站的mysql1、目标 实现游戏过程中的背景音乐。 2、Audio Mixer概念 (1)概念说明 Audio Mixer是一种强大的音频管理工具,用于组织、控制和处理游戏中的所有音频源。 它允许你创建音频层次结构、应用效果、调整音量,并在不同场景或游戏状…

1、目标

实现游戏过程中的背景音乐。

2、Audio Mixer概念

(1)概念说明

Audio Mixer是一种强大的音频管理工具,用于组织、控制和处理游戏中的所有音频源。

它允许你创建音频层次结构、应用效果、调整音量,并在不同场景或游戏状态之间平滑切换。

有多个混音组(Groups)和效果器(Effects)组成,每个混音组可以有自己的音量、效果和子组,形成一个树形结构。主混音器组(Master)位于顶层,所有音频最终都通过它输出。

主要功能包括:

  • 音量控制:独立调节不同类型音频的音量(如音乐、音效、对话)
  • 音频效果:应用压缩器、混响、均衡器等效果
  • 快照(Snapshots):保存和切换不同的音频设置(如从主菜单到游戏场景的过渡)
  • 实时调整:在游戏运行时动态修改音频参数

快照允许你将一组混音器参数(如音量、效果器强度、发送级别等)保存为预设,并在游戏运行时通过代码或事件平滑地在不同预设之间过渡。

(2)项目配置

开启Audio Mixer:Window -> Audio -> Audio Mixer

在Assets -> Sounds下有音频文件:

点击Game Audio Mixer可以看到详细信息

点击Assets/Prefabs/Sound/Sound.prefab,配置Audio Source的Output信息:

后续所有的动作声音都会通过这个播放音频混音器进行调整。

3、编写代码

(1)创建SceneSoundsItem.cs脚本

在Assets/Scripts/Sounds下创建新脚本SceneSoundsItem.cs。

[System.Serializable]
public class SceneSoundsItem 
{public SceneName sceneName;public SoundName ambientSoundForScene;public SoundName musicForScene;
}

(2)创建SO_SceneSoundsList.cs脚本

在Assets/Scripts/Sounds下创建新脚本SO_SceneSoundsList.cs。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[CreateAssetMenu(fileName ="so_SceneSoundsList", menuName ="Scriptable Objects/Sounds/Scene Sounds List")]
public class SO_SceneSoundsList : ScriptableObject
{[SerializeField]public List<SceneSoundsItem> sceneSoundsDetails;
}

(3)修改AudioManager.cs脚本

添加3个引入:

using System;
using UnityEngine.Audio;
using UnityEngine.SceneManagement;

添加如下属性信息:

Awake函数添加代码:

添加如下函数:

    private void OnEnable(){EventHandler.AfterSceneLoadEvent += PlaySceneSounds;}private void OnDisable(){EventHandler.AfterSceneLoadEvent -= PlaySceneSounds;}private void PlaySceneSounds(){SoundItem musicSoundItem = null;SoundItem ambientSoundItem = null;float musicPlayTime = defaultSceneMusicPlayTimeSeconds;// Try Get current sceneif(Enum.TryParse<SceneName>(SceneManager.GetActiveScene().name, true, out SceneName currentSceneName)){// Get Music and Ambient Sounds for Sceneif(sceneSoundsDictionary.TryGetValue(currentSceneName, out SceneSoundsItem sceneSoundsItem)){soundDictionary.TryGetValue(sceneSoundsItem.musicForScene, out musicSoundItem);soundDictionary.TryGetValue(sceneSoundsItem.ambientSoundForScene, out ambientSoundItem);}else{return;}// Stop any scene sounds already playingif(playSceneSoundsCoroutine != null){StopCoroutine(playSceneSoundsCoroutine);}// Play scene ambient sounds and musicplaySceneSoundsCoroutine = StartCoroutine(PlaySceneSoundsRoutine(musicPlayTime, musicSoundItem, ambientSoundItem));}}private IEnumerator PlaySceneSoundsRoutine(float musicPlaySeconds, SoundItem musicSoundItem, SoundItem ambientSoundItem){if(musicSoundItem != null && ambientSoundItem != null){// Start with ambient soundPlayAmbientSoundClip(ambientSoundItem, 0f);// Wait for random range of seconds before playing musicyield return new WaitForSeconds(UnityEngine.Random.Range(sceneMusicStartMinSecs, sceneMusicStartMaxSecs));// Play musicPlayMusicSoundClip(musicSoundItem, musicTransitionSecs);// Wait for music play seconds before transitioning to ambient soundsyield return new WaitForSeconds(musicPlaySeconds);// Play ambient sound clipPlayAmbientSoundClip(ambientSoundItem, musicTransitionSecs);}}private void PlayAmbientSoundClip(SoundItem ambientSoundItem, float transitionTimeSeconds){// Set Volume gameAudioMixer.SetFloat("AmbientVolume", ConvertSoundVolumeDecimalFractionToDecibels(ambientSoundItem.soundVolume));// Set clip & playambientSoundAudioSource.clip = ambientSoundItem.soundClip;ambientSoundAudioSource.Play();// Transition to ambientgameMusicSnapshot.TransitionTo(transitionTimeSeconds);}/// <summary>/// Convert volumeDecimalFraction to -80 to +20 decibel range/// </summary>/// <param name="volumeDecimalFraction"></param>/// <returns></returns>private float ConvertSoundVolumeDecimalFractionToDecibels(float volumeDecimalFraction){// Convert volume from deicimal fraction to -80 to +20 decibel rangereturn (volumeDecimalFraction * 100f - 80f);}private void PlayMusicSoundClip(SoundItem musicSoundItem, float transitionTimeSeconds){// Set Volume gameAudioMixer.SetFloat("MusicVolume", ConvertSoundVolumeDecimalFractionToDecibels(musicSoundItem.soundVolume));// Set clip & playambientSoundAudioSource.clip = musicSoundItem.soundClip;ambientSoundAudioSource.Play();// Transition to ambientgameAmbientSnapshot.TransitionTo(transitionTimeSeconds);}

PlayAmbientSoundClip函数中的参数:

ConvertSoundVolumeDecimalFractionToDecibels函数:把小数转化为分贝。

gameAmbientSnapshot.TransitionTo(transitionTimeSeconds);使用 gameAmbientSnapshotTransitionTo 方法,在指定的时间内平滑地过渡到环境音效的音频快照状态。这个过程通常用于在不同音频场景之间进行平滑的音量变化和效果切换。

4、创建SO对象

在Assets/Scriptable Object Assets/Sounds下创建so_SceneSoundsList.asset

填充数据如下:

5、配置AudioManager对象

在Hierarchy -> PersistentScene -> AudioManager下创建新物体命名为AmbientSound、GameMusic,配置如下:

配置其他参数如下:

调节Audio Mixer -> Snapshots -> MusicOnly,,AmbientMaster调到-10。

indoors1的音量调到0.75。

6、游戏测试

进入不同的Scene,会听到不同的背景音乐

http://www.dtcms.com/wzjs/283001.html

相关文章:

  • 免费发布信息网站平台网站优化排名提升
  • 一条龙网站建设价格网络推广外包代理
  • 个人网站 主机网站设计公司网站制作
  • 建设部网站 信用诚信评分标准市场调研分析
  • 网站开发平台目录今天大事件新闻
  • 农业网站建设模板下载电商推广和网络推广的区别
  • 电脑硬盘做网站服务器教程google浏览器下载
  • 用jsp做网站的技术路线百度一下首页网址百度
  • 广元网站建设工作室百度竞价排名官网
  • 商城网站建设哪家便宜seo哪家好
  • 江南大学做网站网络营销策略的特点
  • 长沙3合1网站建设公司应用商店aso优化
  • 邯郸手机网站建设服务品牌宣传有哪些途径
  • wordpress导入网站数字营销网站
  • 北京网站设计公司新鸿儒搜索引擎优化缩写
  • 青岛企业网站建设优化seo网站优化详解
  • 网站设计 方案seo专业培训费用
  • h5网站后台管理模板nba交易最新消息
  • 无锡有网页制作公司吗郑州网站优化软件
  • 小程序怎么推广引流包头整站优化
  • 武汉网站建设机构永久免费建站系统
  • 设计高端网站建设引擎搜索优化
  • 酒店类网站开发的策略外贸如何做网站推广
  • 个人做论坛网站需要哪些备案营销推广文案
  • 十大免费论文网站合肥关键词排名技巧
  • 北京专业做网站公司10条重大新闻
  • 做网站公众号要多少钱互联网推广中心
  • 做网站的开场白网站品牌推广公司
  • 建设厅副厅长关键词优化排名查询
  • 大连坐做网站公司免费seo在线工具