【问题标题】:how can unity3d multiple audio?unity3d怎么能多音频?
【发布时间】:2013-01-25 08:20:50
【问题描述】:

我的环境:
Win7 x64
Unity Pro 3.5.5
c#(Visual Studio 2010)

我的目标:
我正在用 unity3d 制作手机游戏。
我制作了炸弹效果。
效果在显示时播放自己的声音。

规格:
效果是一个带有平面图、精灵纹理的预制件。
并且有一个 Audiosource(在 Inspector 中将 wav 文件拖放到 Prefab)
炸弹效果由我的自定义对象池管理,因此我在 Inspector 中禁用了 play on awake 选项。 (因为它被我的自定义规则回收)
所以我编码:

//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

问题:
炸弹效应迅速产生。 (攻击速度非常快)
但声音播放就像一个单例。这意味着如果开始播放炸弹效果音频,则无法播放其他炸弹效果游戏对象的音频。直到第一个PLAYING炸弹效果自然停止。

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

【问题讨论】:

    标签: c# audio mobile unity3d


    【解决方案1】:

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

    我想这就是你要找的东西:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 2014-02-25
      • 1970-01-01
      • 2020-08-23
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      相关资源
      最近更新 更多