概念
PUN2层的语音逻辑继承自原始的Photon Voice 1或PUNVoice:语音客户端状态可以自动与PUN的客户端状态同步。
考虑的主要用例是每个玩家都有网络实例化的PUN预设(角色或化身),其中音频是三维定位的。单个音频流有一对组件,每个端点上都有一个:Recorder和Speaker。使用PUN时,链接对通过Photon View ID链接。
[组件] PhotonVoiceNetwork 语音网络
PhotonVoiceNetwork是一个单例:实例应该只存在一个。如果存在多个实例,
则只保留一个实例,其他实例将被销毁。我们无法预测将保留哪个实例,
因此您最好确保只有一个实例存在。
在运行时创建的任何新的额外实例都将被销毁。
如果你从一个预设添加PhotonVoiceNetwork,确保它被实例化一次。
PhotonVoiceNetwork扩展了VoiceConnection并添加了与PUN相关的特性:默认的SpeakerFactory被覆盖,您可以调整PUN和Voice客户端状态同步的程度。另外,PUN和Voice可以共享来自PhotonServerSettings设置的相同AppSettings。
Default SpeakerFactory 默认扬声器工厂
新工厂将尝试为 使用交换Photon View ID作为用户自定义数据对象的 音频流信息 找到合适的Speaker。
Auto Connect And Join 自动连接和连接
如果PUN 进入房间,Voice 客户端也可以连接并加入相应的语音室。
Auto Leave And Disconnect 自动离开并断开
如果PUN 离开房间,Voice 客户端可以自动断开连接。
[组件] PhotonVoiceView 语音视图
PhotonVoiceView是负责为网络实例化的PUN预设设置录音机和扬声器的组件。
Suggested Workflow 建议的工作流程
Scene Setup (PhotonVoiceNetwork) 场景设置
- 在PUN的PhotonServerSettings面板中AppSettings的设置Voice AppId。
- 在场景中添加一个PhotonVoiceNetwork并启用“Don't Destroy On Load”。
- 将Recorder添加到场景,更新其属性并将其指定给PhotonVoiceNetwork.PrimaryRecorder。
Prefab Setup (PhotonVoiceView)预设设置
- 将PhotonVoiceView添加到PUN预设游戏对象并附加一个PhotonView。
- 设置PhotonVoiceView.UsePrimaryRecorder为true。
- 将Speaker添加到预设并将其指定给PhotonVoiceView.SpeakerInUse.
【完】