Мой аудиоклип останавливается, как только он играет Unity C # - PullRequest
0 голосов
/ 27 ноября 2018

Код:

using UnityEngine;
using System.Collections;

public class DayNightController : MonoBehaviour {
public AudioSource daySong;
public AudioSource nightSong;
public Light sun;
public float secondsInFullDay = 120f;
[Range(0,1)]
public float currentTimeOfDay = 0;
[HideInInspector]
public float timeMultiplier = 1f;

float sunInitialIntensity;

void Start() {
    sunInitialIntensity = sun.intensity;

}

void Update() {
    UpdateSun();

    currentTimeOfDay += (Time.deltaTime / secondsInFullDay) * timeMultiplier;

    if (currentTimeOfDay >= 1) {
        currentTimeOfDay = 0;
    }
    if(currentTimeOfDay > 0.5){
        daySong.Stop();
        nightSong.Play(0);
    }
    if(currentTimeOfDay < 0.5){
        daySong.Play(0);
        nightSong.Stop();
    }
}

void UpdateSun() {
    sun.transform.localRotation = Quaternion.Euler((currentTimeOfDay * 360f) - 90, 170, 0);

    float intensityMultiplier = 1;
    if (currentTimeOfDay <= 0.23f || currentTimeOfDay >= 0.75f) {
        intensityMultiplier = 0;
    }
    else if (currentTimeOfDay <= 0.25f) {
        intensityMultiplier = Mathf.Clamp01((currentTimeOfDay - 0.23f) * (1 / 0.02f));
    }
    else if (currentTimeOfDay >= 0.73f) {
        intensityMultiplier = Mathf.Clamp01(1 - ((currentTimeOfDay - 0.73f) * (1 / 0.02f)));
    }

    sun.intensity = sunInitialIntensity * intensityMultiplier;
}
}

Поэтому, когда время достигает этой точки команды if, я слышу песню, но она останавливается через 1 секунду после воспроизведения, аудиоклипы более 2 минут, я не знаю, почему этосделать это, он активирует, что если команда, но затем останавливается, извините за то, что я нуб, но мне нужна помощь, потому что игра, которую я делаю, значит для меня мир, Подробнее: Что я думаю, он активирует команду if, затем пытаетсяследующий и останавливает аудиоклип, поможет ли округлить число [текущее время]?

1 Ответ

0 голосов
/ 27 ноября 2018

Вы будете звонить Play в каждом кадре.Вам нужно только вызвать play на кадре, который переключается между днем ​​и ночью

void Update() {
    UpdateSun();

    bool isDay = currentTimeOfDay <= 0.5;
    currentTimeOfDay += (Time.deltaTime / secondsInFullDay) * timeMultiplier;
    if (currentTimeOfDay >= 1) {
        currentTimeOfDay = 0;
    }
    bool willBeDay = currentTimeOfDay <= 0.5;

    if(isDay && !willBeDay){
        daySong.Stop();
        nightSong.Play(0);
    }
    else if(!isDay && willBeDay){
        nightSong.Stop();
        daySong.Play(0);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...