情景一、音量条制作,滑动滑块声音变大或变小
解决方案:主要用到了UISlider
Step0:首先需要场景中播放声音可以参考我的文章《Unity3D-场景声音播放》
Step1:创建一个Sprite名为VolumeSlider,创建子Sprite:Background(作为UISlider的背景)、Foreground(形象显示音量大小)、Thumb(滑块)和1个子Lable:Number(用来在音量条的右侧音量百分数),其中VolumeSlider的Dimensions设为350X30,Thumb的尺寸设置为:30X60;
注意:VolumeSlider不能是空物体,因为空物体没有尺寸,下文需要设置Background,Foreground,Number的Anchors(锚点),使它们依据父物体的尺寸来确定自身的尺寸,故不能选没尺寸的空物体,必须是Sprite或加了UISprite的空物体。
Step2:给VolumeSlider添加组件BoxCollider,并且IsTrigger打√,UISprite的BoxCollider auto-adjust to match打√(保证BoxCollider的尺寸和Sprite的尺寸相同),添加脚本UISlider并设置如下。
Step3:为Background,Foreground,Thumb设置Atlas图片,VolumeSlider的Depth设为0,Background的Depth设为1,Foreground和Number的Depth设为2,Thumb的Depth设为3。
Step4:设置Background,Foreground,Number,Thumb(可以不设置)的Anchors(锚点),以Foreground为例:
Left一行的意思是:Foreground的Dimensions的左边界是以VolumeSlider的左边界(可变)为基准向右边为5的距离处(向右为正,向上为正);
Right一行的意思是:Foreground的Dimensions的右边界是以VolumeSlider的右边界(可变)为基准向左边为5的距离处;
Bottom一行的意思是:Foreground的Dimensions的底边界是以VolumeSlider的底边界(可变)为基准向上边为5的距离处;
Top一行的意思是:Foreground的Dimensions的上边界是以VolumeSlider的上边界(可变)为基准向下边为5的距离处;
设置完毕后会看到Foreground的大小相应变为340X20;
在设置Thumb的锚点Anchors时,Type选择Advanced
Step5:此时可以改变VolumeSlider的UISlider的Value可看到初始效果,下面将将此Value和Audio的AudioSource的Volume进行关联。
Step6:Audio的脚本改为:
using UnityEngine;
using System.Collections;
public class Audio : MonoBehaviour {
// Use this for initialization
public GameObject VolumeSlider;//记得此处VolumeSlider要从Hierarchy拖到Inspector赋值
void Start () {
GameObject [] audioes = GameObject.FindGameObjectsWithTag ("Audio");
if (audioes.Length == 2) {
Destroy (this.gameObject);
}
DontDestroyOnLoad (this.gameObject);
}
public void SetVolume () {
//GameObject audio = GameObject.FindGameObjectWithTag ("Audio");
float volume = VolumeSlider.GetComponent <UISlider>().value;
this.gameObject.GetComponent <AudioSource>().volume = volume;
}
}
Step7:设置VolumeSlider的UISlider
此方案完毕.
欢迎大家批评指正,在此多谢各位不吝赐教!