开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:706

当前位置:游戏蛮牛 技术专区 教程分享

查看: 2267|回复: 3

[基础知识] Unity5 音效一

[复制链接]  [移动端链接]
7日久生情
4301/5000
排名
2350
昨日变化
4

1646

主题

1657

帖子

4301

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
132510
好友
17
蛮牛币
65411
威望
0
注册时间
2015-12-24
在线时间
352 小时
最后登录
2017-6-20
发表于 2016-3-23 10:51:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
  一、Unity 支持音效格式

  下图为Unity目前所支持的音效格式

1.png

  常用的为 .mp3, .ogg, .wav

  .wav 适用于较短的音效

  .mp3 适用于较长的音效

  .ogg 适用于较长的音效

  下面以一个 .mp3 音效拖到Project 下,然后选中该音效,在Inspector面板显示其属性

2.png

  Load Type:

  DecompressOnLoad : 音效文件加载后为解压缩状态,好处是耗费CPU少。

  CompressedInMemory :音效文件在内存中保持压缩状态,占用内存少,但是耗费CPU,当使用该音效时首先要CPU对其进行解压,然后才能使用。

  Streaming : 当播放该音效时,从磁盘以流的形式加载音效数据,好处,占用内存最少,因为只有很少的缓冲数据占用内存。

  二、播放音效

  首先确认场景中有且只有一个对象挂载了 Audio Listerer 组件(一般摄像机上默认挂载一个)。

  然后创建一个对象,添加 AudioSource 组件,将音效拖拽到 AudioClip 参数上,如下图

3.png

  选中 Play On Awake(开始即播放)

  运行游戏,即可听到播放的音效

  下面先介绍一些 AudioSource 的一些常用参数

  (1)Output 音效混合器

  (2)Play On Awake 运行开始立即播放

  (3)Loop 是否循环播放

  (4)Priority 播放优先权(0 - 255),数值越小,优先级别越高

  (5)Volume 播放音量

  (6)Pitch 音高,默认为 1,大于1时提高音高,并且会加快播放速度,小于1,降低音高,减慢播放速度,但是数值偏离 1越大,越偏离原始声音

  (7)Stereo Pan 立体声,默认为 0,当值为 -1时,只有左声道响,当值为 1时,只有右声道有声音

  (8)Spatial Blend 当值为 0时为 2D音效,当值为 1 时为 3D音效

  (9)Volume Rolloff 即随着和AudioLister 的距离变化,听到的音量变化曲线

4.png

5.png

  (10)in Distance 当距离超过该数值时,声音开始衰减

  (11) Max Distance 当距离超过该数值时,音量衰减为 0

  三、通过代码控制播放以及上面所有参数的控制

  一般不会使用直接将 音效拖拽到 AudioSource 的AudioClip参数上,因为那样做不利于管理,并且它会在 对象生成的时候立即加载音效到内存,并且不会释放。音效过多或是音效过大时相当耗费内存。

  所以要对音效进行动态加载

  下面为了省事,直接从Resources 下加载音效了

  创建脚本 PlayAudio.CS 将其拖拽到需要播放音效的对象上

  using UnityEngine;

  using System.Collections;

  using UnityEngine.Audio;

  //如果添加该脚本的对象上没有挂载 AudioSource组件,将自动添加该组件

  [RequireComponent(typeof(AudioSource))]

  public class PlayAudio : MonoBehaviour {

  private AudioSource _audioSources;

  public AudioMixerGroup _audioMixerGroup;

  // Use this for initialization

  void Start () {

  _audioSources = GetComponent<AudioSource>();

  if (_audioSources == null)

  {

  Debug.LogWarning("audioSources is null");

  return;

  }

  if (_audioMixerGroup != null)

  _audioSources.outputAudioMixerGroup = _audioMixerGroup; // 设置音效混合器

  AudioClip audioClip = Resources.Load("AA") as AudioClip;

  if (audioClip == null)

  {

  Debug.LogWarning("audioClip is null");

  return;

  }

  _audioSources.clip = audioClip;     //动态添加音效

  _audioSources.playOnAwake = false;   //运行开始立即播放

  _audioSources.loop = true;          //设置循环播放

  _audioSources.priority = 128;       //设置优先权

  _audioSources.volume = 1;           //设置音量大小为 1

  _audioSources.pitch = 1;            //设置音高为 1

  _audioSources.spatialBlend = 0;     //设置音效为 2D 音效

  _audioSources.minDistance = 1;      //设置最小开始衰减距离

  _audioSources.maxDistance = 100;    //设置最大能听到音量距离

  //设置音量衰减类型为线性衰减

  _audioSources.rolloffMode = AudioRolloffMode.Linear;

  }

  private float currentSecond = 0; //记录当前播放到了第几秒

  // Update is called once per frame

  void Update () {

  if (Input.GetKeyDown(KeyCode.A))

  {

  if (_audioSources != null)

  {

  //设置从第几秒的位置开始播放

  _audioSources.time = currentSecond;

  _audioSources.Play();

  }

  }

  if (Input.GetKeyDown(KeyCode.D))

  {

  //判断是否为空,是否正在播放

  if (_audioSources != null && _audioSources.isPlaying)

  {

  currentSecond = _audioSources.time;

  _audioSources.Pause();

  }

  }

  if (Input.GetKeyDown(KeyCode.W))

  {

  //判断是否为空,是否正在播放

  if (_audioSources != null && _audioSources.isPlaying)

  {

  _audioSources.Pause();

  AudioClip audioClip = _audioSources.clip;

  _audioSources.clip = null;

  Resources.UnloadAsset(audioClip);

  }  }

  }

  }

  运行点击 A 播放,D暂停,W 释放音效

unityaudiomixer;unity给人物添加走路音效;unity压缩文件夹和解压文件夹;

点评

第二篇:http://blog.csdn.net/LIQIANGEASTSUN/article/details/47702483  发表于 2017-8-7 10:01

本帖被以下淘专辑推荐:


回复

使用道具 举报

5熟悉之中
623/1000
排名
3055
昨日变化
22

2

主题

89

帖子

623

积分

Rank: 5Rank: 5

UID
158341
好友
0
蛮牛币
1211
威望
0
注册时间
2016-7-28
在线时间
152 小时
最后登录
2017-11-18
发表于 2016-9-17 22:11:28 | 显示全部楼层
正好需要呢,谢谢
[发帖际遇]: 一个袋子砸在了 aoyoo 头上,aoyoo 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1293/1500
排名
920
昨日变化
1

1

主题

46

帖子

1293

积分

Rank: 6Rank: 6Rank: 6

UID
100193
好友
1
蛮牛币
3046
威望
0
注册时间
2015-5-14
在线时间
318 小时
最后登录
2017-11-10
发表于 2016-11-3 14:40:43 | 显示全部楼层
怎么没有说走路怎么处理?动画跟音效不同步怎么破
[发帖际遇]: skeleton 被钱袋砸中进医院,看病花了 1 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表