今天记录一下添加声音以及用Silder调节音量大小,首先创建一空对象,命名为Volume,然后为其创建子对象music,并给music添加脚本Audio Source,将准备好的音乐素材绑定至AudioClip中,游戏的背景音乐一般是持续重复播放,所讲PlayOnAwake和Loop选中。接下来创建Slider,使其作为Volume的子对象,创建步骤为NGUI->Open-Widget Wizard,然后选择Template为Slider,上面的图集可以自定义,我选择的是自带的Wooden Atlas。创建好之后,接下来需要调整一些参数的性质了。
首先将图片精灵调至认为合适的大小,接着是Box Collider的大小。如果精灵的长度要拉伸,最好设置精灵属性为Sliced(可拆分),比如Background精灵设置为Sliced,Foreground的Type设置为Filled,然后会出现Fill Dir选项,将它选为Horizontal,Thumb需要调整box Collider的Size。其他的默认就行,也可以根据需求,修改前面的属性。将Main摄像机上添加UI Camera脚本(NGUI Event),I接下来上代码,并将代码中的changeVolume_music方法绑定在Slider的OnValueChange上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AudioControl : MonoBehaviour {
public UISlider bgSlider; //背景音乐的Slider
public AudioSource bgAudioSource;
public float bgVolume;
public float yxVolume;
// Use this for initialization
void Start () {
bgVolume = getBgVolume();
bgAudioSource.volume = bgVolume;
bgSlider.value = getBgVolume();
}
public void setBgVolume(float f) {
PlayerPrefs.GetFloat("music", f);
}
private float getBgVolume()
{
return PlayerPrefs.GetFloat("music", 1f);
}
public void changeVolume_music() {
bgVolume = bgSlider.value;
bgAudioSource.volume = bgSlider.value;
setBgVolume(bgSlider.value);
}
}
音效的方式和这差不多,区别在于AudioSource中的Loop不勾选,在代码中定义AudioClip,为其绑定音效,
public AudioSource soundAudioSource;
public AudioClip yxtest;
soundAudioSource.PlayOneShot(yxtest, 0.5f);
soundAudioSource.PlayOneShot(yxtest);
PlayOneShot重载了两种方法,第一种是:第一个参数是音效的声音源,第二个是音效播放的声音大小。第二种只有一个声音源参数。
以上就是今天要说的,过几天我在对比一下UGUI的Slider,希望有好建议的留言。