声音播放完回调

    //Control sound playback and click onflict.

    CDSoundSource *myEffect;    

    SimpleAudioEngine *mySAE;



                        myEffect=[[mySAE soundSourceForFile:ss] retain];

                        [myEffect play];

                        

                        [self schedule:@selector(checkSoundState) interval: 0.01];


-(void)checkSoundState{

    //判断是否播放的时候这样做

    if (myEffect.isPlaying)

    {

        //正在播放

        self.isTouchEnabled=NO;

    }

    else

    {

        //音效没有播放

        self.isTouchEnabled=YES;

        [self unschedule:@selector(checkSoundState)];

        

    }

    

}


### 实现 UE5 中音频依次播放 为了实现在 Unreal Engine 5 (UE5) 中当第一个音频文件播放结束之后自动播放第二个音频文件的功能,可以采用蓝图(Blueprint)或 C++ 编程两种方式来成此需求。 #### 使用 Blueprint 实现 通过蓝图可视化脚本系统能够较为直观地创建这样的逻辑: 1. **事件触发** - 设置一个 `Event BeginPlay` 节点作为起点。 2. **加载并播放首个音效** - 添加 `Spawn Sound Attached` 或者 `Play Sound at Location` 来指定要播放的第一个声音资源,并将其连接到上述节点上。 3. **监听播放状态变化** - 利用 `On Audio Finished` 输出引脚捕捉当前正在播放声音已结束。 4. **条件判断与切换至下一个音效** - 如果检测到前一段音乐确实结束了,则再次调用相应的函数启动第二段音乐的播放过程。 以下是简化版的蓝图结构描述[^6]: ```plaintext Begin Play -> Spawn First Sound -> On Audio Finish? Yes -> Spawn Second Sound ``` #### 使用 C++ 实现 对于更复杂的场景或是偏好编程的方式而言,也可以利用 C++ 成同样的功能。下面给出了一种可能的方法: ```cpp #include "Components/AudioComponent.h" // 假设此类继承自 AActor 并实现了必要的接口 void AMyAudioPlayer::BeginPlay() { Super::BeginPlay(); UAudioComponent* FirstSound = NewObject<UAudioComponent>(this); FirstSound->SetSound(LoadObject<USoundWave>(nullptr, TEXT("/Game/Sounds/FirstAudio.FirstAudio"))); // 绑定委托以便于追踪播放进度 FirstSound->OnAudioFinished.AddDynamic(this, &AMyAudioPlayer::HandleFirstAudioFinished); FirstSound->AttachToComponent(RootComponent,FAttachmentTransformRules::KeepRelativeTransform); FirstSound->Play(); } void AMyAudioPlayer::HandleFirstAudioFinished(UAudioComponent* OwningComp) { // 当第一次播放结束后... UAudioComponent* SecondSound = NewObject<UAudioComponent>(this); SecondSound->SetSound(LoadObject<USoundWave>(nullptr, TEXT("/Game/Sounds/SecondAudio.SecondAudio"))); SecondSound->AttachToComponent(RootComponent,FAttachmentTransformRules::KeepRelativeTransform); SecondSound->Play(); } ``` 这段代码展示了如何定义两个不同的音频组件实例分别用于存储两首歌曲的数据;并通过绑定回调方法监控第一首曲目的播放情况,在其成后立即激活另一首曲目继续播放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值