Unity 音乐淡入淡出脚本:修复错误并优化代码
public class MusicFade : MonoBehaviour
{
/*
* 挂载在 audiosource 类型的 gameobj 上,使用时调用 objname.FadeMusic(volume, time)
*/
// Start is called before the first frame update
[SerializeField] private AudioSource Music;
[SerializeField] private float volumeDelta;
[SerializeField] private float targetvolume ;
[SerializeField] private bool isfading;
void Start()
{
Music = GetComponent
// Update is called once per frame
void Update()
{
if (!isfading) return;
if(Mathf.Abs(Music.volume - targetvolume) >= Mathf.Abs(volumeDelta)) // 修正错误:Math.Abs 改为 Mathf.Abs
{
Music.volume += volumeDelta; // 修正错误:float 强制转换移除
Debug.Log('fading...');
}
else
{
Music.volume = targetvolume;
isfading = false;
}
}
public void FadeMusic(float targetVolume/*0-1*/, float durtime/*seconds*/)
{
Debug.Log('Music fade set target = ' + targetVolume);
targetvolume = targetVolume;
if(Music == null) Music = GetComponent<AudioSource>();
float timedelta = durtime / Time.deltaTime;
if(timedelta > 0)
volumeDelta = (targetVolume - Music.volume) / timedelta;
else
{
volumeDelta = (targetVolume - Music.volume);
}
isfading = true;
}
public void FadeOut()
{
FadeMusic(0,1); // 修正错误:fadeMusic 改为 FadeMusic
}
public void FadeIn()
{
FadeMusic(0.5f,1); // 修正错误:fadeMusic 改为 FadeMusic
}
}
原文地址: https://www.cveoy.top/t/topic/ojMd 著作权归作者所有。请勿转载和采集!