播放音频并继续播放

2023-12-04

我正在用 C# 在 unity 5 中制作一个小游戏。

到目前为止,我已经成功设计了关卡并完成了一些基本的脚本编写。

目前,我有一个触发器,可以生成一个对象,并希望它在用户输入后播放并播放音频源。然而,因为我希望它是一个跳跃恐慌,所以触发器非常小,目前只有当我留在触发器中时才会播放声音。

我的代码如下:

using UnityEngine;
using System.Collections;

public class Spawner : MonoBehaviour {

    public GameObject monster;
    public AudioSource aud; 
    public AudioClip piano; 

    void Start () 
    {
        monster.SetActive (false);
        aud = monster.GetComponent<AudioSource>();
    }

    void OnTriggerEnter(Collider other){
        if (other.CompareTag ("Player")) {
            monster.SetActive (true);
            AudioSource.PlayClipAtPoint(piano, monster.transform.position);
        }

    }

    void OnTriggerExit(Collider other){
        if (other.CompareTag ("Player")) {
            monster.SetActive (false);
        }
        Destroy (this.gameObject);
    }

}

我想知道是否有办法即使在人离开扳机后仍保持声音播放.

Thanks!


在音频完成播放之前,附加的游戏对象音频将被销毁。使用AudioSource.PlayClipAtPoint将创造和毁灭Audiosource这使得缓存aud变得毫无用处。另外,如果你有太多触发游戏对象,那么速度会很慢,因为GC. Use Coroutine等待音频播放完毕然后销毁gameObject.

public GameObject monster;
public AudioSource aud;
public AudioClip piano;

void Start()
{
    monster.SetActive(false);
    aud = GetComponent<AudioSource>();
}

void OnTriggerEnter(Collider other)
{
    if (aud.isPlaying)
    {
        return; //Exit if Audio is already playing
    }

    if (other.CompareTag("Player"))
    {
        monster.SetActive(true);
        aud.PlayOneShot(piano);
    }

}

void OnTriggerExit(Collider other)
{
    if (other.CompareTag("Player"))
    {
        monster.SetActive(false);
    }
    StartCoroutine(waitForAudioThenDestroy());
}

IEnumerator waitForAudioThenDestroy()
{
    //Wait until we are done playing
    while (aud.isPlaying)
    {
        yield return null;//Don't freeze
    }

    //We are no longer playing audio so we can destroy this gameObject now
    Destroy(this.gameObject);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

播放音频并继续播放 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的

随机推荐

  • LateError(LateInitializationError:字段“纬度”尚未初始化。)

    这是我的代码 import package flutter material dart import package climate services location dart import package http http dart
  • Ctor Initializer:自初始化导致崩溃?

    我很难调试生产中的崩溃 只是想与这里的人们确认语义 我们有一堂课 比如 class Test public Test members initialized m str m str Test private other members st
  • 如何阻止恶意代码欺骗“Origin”标头来利用 CORS?

    按照我的理解 如果在 foo com 页面上运行的客户端脚本想要从 bar com 请求数据 则在请求中它必须指定标头Origin http foo com 并且 bar 必须响应Access Control Allow Origin ht
  • 在 Linux 上安装 Rglpk

    我正在尝试使用 install packages 命令安装 Rglpk 我收到此错误 bin sh 第 0 行 cd GLPK 没有这样的文件或目录 make GLPK ts 错误 1 glpk dev 软件包已安装 rpm qa grep
  • 私有[this] 与私有

    在 Scala 中 我看到了对象私有变量这样的功能 从我不太丰富的 Java 背景中 我学会了关闭所有内容 使其私有 并在必要时打开 提供访问器 Scala 引入了更严格的访问修饰符 我应该始终默认使用它吗 或者我应该仅在某些特定情况下使用
  • 什么是 WindowInsets?

    我正在尝试了解 Android 操作系统 当我阅读 Google I O 2014 应用程序时 我遇到了WindowInsets 如果有人可以解释它们是什么 那么这将是一个很大的帮助 谢谢 WindowInsets是应用于窗口的系统视图 例
  • python 子类化:TypeError object.__new__() 不带参数

    好吧 我又被难住了 不过这应该很容易 我正在尝试对 pytables 类进行子类化tables IsDefinition 如下 import tables class doc tables IsDescription def init se
  • {Java} Vaadin 14 - 检测用户离开(关闭选项卡、f5 等)

    我目前正在使用Vaadin 流版本 14 https github com vaadin platform releases tag 14 0 0 我运行 Java 版本 1 8 0 231 64 位 我只是希望能够检测 在 java 中
  • 我正在尝试将多个蜘蛛的结果存储到 MySQL 中的单独表中

    这是我的 pipelines py 我有两只蜘蛛 一只叫 bristol py 一只叫 Bath py 当我运行 scrapycrawl bristol 时 它会自动将结果添加到名为 Bristol 的 MySQL 数据库表中 我想运行 s
  • 扫描特定服务 CBUUID 时找不到外围设备

    当我使用时 CBUUID uuid CBUUID UUIDWithString 1800 GAP DEBUG LOG CBUUID uuid CBUUID Generic Access Profile centralMan CBCentra
  • Delphi - 在运行时解析 JSON 数据时发生访问冲突

    我是论坛新手 如果我的帖子格式不正确或未遵循指南 请深表歉意 我会很快 得到 这是我的问题 看看下面的代码 我已经删除了几乎所有无关的部分 以将注意力集中在一个关键行上 LParts LJsonObj Get parts JsonValue
  • Cocoa应用程序系统重启

    您知道有什么方法可以通过代码强制重新启动 Mac OS 计算机吗 我尝试了一个小的 applescript 代码 但没有结果 应用程序要求用户关闭 以便用户可以停止重新启动过程 Regards 官方的方式是向登录窗口进程发送系统事件 苹果技
  • 如何在 C# Windows 窗体应用程序中的数据 gridview 中进行搜索?

    我有一个表单 其中一个简单的 gridview 由数据库中的表填充 其中包含 TicketID 名称 公司 产品等列 现在我想添加搜索功能 以便用户可以按客户名称或公司或 TicketID 进行搜索 我怎样才能做到这一点 我想在数据网格上方
  • 使用来自 URL 列的 importXML 和 arrayformula 在 google 工作表中返回相同的重复结果

    我已成功使用 ImportXML 获取 Youtube 视频的标题以及 Google Sheets 中的 URL 这是我的代码 IF ISBLANK A3 A IMPORTXML A3 A id eow title 但是 当我尝试在 Imp
  • 机架 ssl 不适用于 Thin

    我按照以下说明为 Rails 3 07 安装了rack ssl http www simonecarletti com blog 2011 05 configuring rails 3 https ssl 它不起作用 发出第一个 https
  • 快速比较两个结构的值

    我有两个结构体和两个与之对应的数组 我试图比较这两个数组值并将其打印在一个过滤数组中我确实尝试过使用过滤器 但它给了我一个错误我想比较结构体和获取一个数组 结构一 struct One let ID String let name Stri
  • 由于警告和 ValueError,无法在 Windows 的 virtualenv 中 pip 安装 PIL

    我正在尝试安装PIL在 virtualenv 中但失败了 我创建了一个全新的 virtualenv 并做了pip install PIL并得到以下结果 C Users s3z Desktop My Dropbox pythons ham g
  • 计算 iOS 中的电池寿命

    想知道除了苹果技术统计数据之外是否还有其他参考资料来计算电池寿命 我尝试比较一些现有的电池应用程序 剩余电池百分比 苹果的数据 但有时我没有得出相同的答案 另外还有使用 2G 电池 而不是 3G 的统计数据 我在 Apple 上没有看到任何
  • 如何为另一个使用 stdin 输入的函数编写测试函数?

    作为大学作业的一部分 我有以下职能 int readMenuOption local declarations char option 2 read in 1 char from stdin plus 1 char for string t
  • 播放音频并继续播放

    我正在用 C 在 unity 5 中制作一个小游戏 到目前为止 我已经成功设计了关卡并完成了一些基本的脚本编写 目前 我有一个触发器 可以生成一个对象 并希望它在用户输入后播放并播放音频源 然而 因为我希望它是一个跳跃恐慌 所以触发器非常小