首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何才能unity3d的多音频?

如何才能unity3d的多音频?
EN

Stack Overflow用户
提问于 2013-01-25 08:20:50
回答 1查看 2.5K关注 0票数 2

我的环境:

Win7 x64

团结专业3.5.5

C#( 2010)

我的目标:

我正在用unity3d制作一个手机名。

我做了个轰炸。

这种效果在显示时会播放自己的声音。

规格:

效果是一个单一的预制件与一个计划,精灵纹理。

并且有一个Audiosource (拖放wav文件到检查器中的预置文件)

bombeffect是由我的自定义对象池管理的,因此我在检查器中禁用了play on awake选项。(因为它是按照我的习惯规则回收的)

所以我编码:

代码语言:javascript
复制
//when the booming is begin

GameObject obj;
obj = MyObjectPool.Recycle("Prefabs/BombEffect");  //try recycle
if(obj != null)
{
    //every object's first creation is doing here
    obj = Instantiate("Prefabs/BombEffect") as GameObject;
    MyObjectPool.StartManage(obj);
}
obj.audio.play(); //play

问题:

轰炸机很快就产生了。(攻击速度非常快)

但是声音播放的效果就像单身一样。这意味着,如果轰炸机的声音是开始播放,比其他轰炸机游戏对象的音频不能播放。直到第一个播放轰炸机是自然停止。

但据我所知,预制片的音频源可以与另一个预制片的音频源同时播放。但事实并非如此。我不明白。我如何多播放相同的音频wav文件?

EN

回答 1

Stack Overflow用户

发布于 2013-01-29 16:57:11

我想你的逻辑可能有问题。如果MyObjectPool中没有任何可用的对象,MyObjectPool.Recycle()将返回null,除非您的回收()实现正在做一些我不知道的事情。

我想这就是你要找的:

代码语言:javascript
复制
    if(obj == null)
    {
       //every object's first creation is doing here
       obj = Instantiate("Prefabs/BombEffect") as GameObject;
       MyObjectPool.StartManage(obj);
    }

可能发生的情况是,您从未实际实例化更多的一个对象。一旦它完成播放,它返回到池,然后被回收,以便再次播放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14517931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档