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(); volumeDelta = 0; isfading = false; //修正错误:volDecrease改为isfading }

// 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
}
检查并修复unity代码错误:public class MusicFade MonoBehaviour 挂载在audiosource类型的gameobj上使用时调用objnamefadeMusicvolumetime Start is called before the first frame update SerializeField private

原文地址: https://www.cveoy.top/t/topic/fDFy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录