Автор Тема: Звук  (Прочитано 793 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Январь 17, 2015, 02:44:09 am
Прочитано 793 раз

Zylaks

  • Активный участник

  • Оффлайн
  • ****

  • 271
  • Репутация:
    2
    • Просмотр профиля
Как проиграть звук 1 раз?В данном коде звук лагает и постоянно воспроизводится.

using UnityEngine;
using System.Collections;

public class Haracteristic : MonoBehaviour {

    public static sbyte HP = 100;
    public AudioClip dead;

    void Update()
    {
        Debug.Log(HP);

        if (HP < 0)
            HP = 0;

        if (HP > 100)
            HP = 100;

        if(HP <= 0)
        {
            audio.PlayOneShot(dead);
        }

    }
}

Январь 18, 2015, 13:03:40 pm
Ответ #1

Alcatraz

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 1851
  • Репутация:
    123
    • Просмотр профиля
    • Flight Dream Studio
замечание
1. не стоит сыпать в лог каждый кадр сообщения о хп, это крайне не рационально!
2. в кач-ве решения можно сделать
bool alreayDead = false;

при смерти делать так:
if(hp <= 0 && !alreadyDead) {
 //SOUND, DEAD EFFECTS E.T.C
 alreadyDead = true;
}

Январь 19, 2015, 03:49:21 am
Ответ #2

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2454
  • Репутация:
    153
    • Просмотр профиля
А конструкции имеет смысл вложить друг в друга, чтобы их меньше выполнялось каждый кадр:
        if (HP <= 0){

            if(HP < 0) HP = 0;
            audio.PlayOneShot(dead);
       }

И что за расплывчатый вопрос? Проиграть 1 раз как? это за всю игру, или 1 раз в час, или в минуту?
У тебя при таких условиях, звук обязан проигрываться каждый раз, когда HP будет приравниваться нулю.

Можно сделать так, чтобы звук воспроизводился единоразово каждый раз, как HP упало ниже нуля:
if(HP < 0){ HP = 0; audio.PlayOneShot(dead);}