PUN 2音频源播放多次

问题描述 投票:0回答:1

我将动画事件链接到我的角色,当角色踩踏时会发出随机的脚步声。我正在尝试将其设置为多人游戏,但出现了一些问题。在一个人的情况下,声音只能播放一次。但是,经过2个人的测试,每个脚步声在一个玩家踩踏的同时播放了两次。每个播放器都有一个音频源组件。两种脚步声都来自运行中的播放器的音频源,因此,并非两个播放器都播放相同的声音。关于为何同时复制和播放声音的任何想法?双重声音来自同一客户端,但仅当该客户端处于多人游戏中时。并不是别人走时,只有客户。我必须使用RPC设置错误或将错误放置在错误的位置。

1个播放器和1个音频源:声音播放一次

2个具有自己的音频源的播放器:声音重复并同时播放

有2个播放器的音频源启用了仅一次步行:声音仍然播放两次

根据我的播放器代码

public void PlayFootstep()
        {
            int clipPick = Random.Range(0, footstepArray.Length);
            GetComponent<AudioSource>().clip = footstepArray[clipPick];
            photonView.RPC("PlayFootstepRPC", RpcTarget.All);
        }

[PunRPC]
private void PlayFootstepRPC()
        {
            if (GetComponent<AudioSource>().isActiveAndEnabled && GetComponent<PlayerMovement>().ySpeed > 1.15)
            {
                GetComponent<AudioSource>().Play();
            }
        }
c# unity3d multiplayer photon audio-source
1个回答
0
投票

如果通过动画事件调用PlayFootstep,并且通过PhotonAnimatorView同步了动画,则PlayFootstepRPC()会被调用多次,每个连接的客户端一次。

PhotonAnimatorView使对象在每个客户端上播放相同的动画。在每个客户端上调用PlayFootstep函数,每个客户端将RPC发送给自身和其他客户端,并且RPC会播放声音。

[我建议您要么不通过RPC播放脚步声,要么在本地播放(因为动画事件会为您处理),或者在调用RPC之前添加对PhotonView.IsMine的检查。

© www.soinside.com 2019 - 2024. All rights reserved.