NGUI之Slider调节音量大小

金高轩
2023-12-01

今天记录一下添加声音以及用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,希望有好建议的留言。

 类似资料: