我已经在研究解决方案已有好几个星期了,我认为是时候伸出援手了。我试图使一个按钮在被控制器按下时能够播放声音,每个人都会听到该声音。使用VRTK和PlayoVR,我可以制作一个非网络版本,玩家可以将手伸过一个立方体,单击控制器上的触发器,然后发出声音。
这是该多维数据集的代码:
namespace VRTK.Examples {
using UnityEngine;
public class Whirlygig : VRTK_InteractableObject
{
public GameObject AudioSource;
public AudioSource LeftSpeaker;
public override void StartUsing(VRTK_InteractUse currentUsingObject =
null)
{
AudioSource.GetComponent<AudioSource>().Play();
}
}
}
我迷路的地方是如何使用Photon Unity Networking将其联网。这就是我所拥有的:
namespace PlayoVR
{
using UnityEngine;
using VRTK;
using UnityEngine.Video;
using NetBase;
public class PlaySync : Photon.MonoBehaviour
{
public AudioSource LeftSpeaker;
public GameObject Whirlgig;
private bool StartUsing;
// Use this for initialization
void Awake()
{
GetComponent<VRTK_InteractableObject>().InteractableObjectUsed +=
new InteractableObjectEventHandler(DoPlay);
}
void DoPlay(object sender, InteractableObjectEventArgs e)
{
StartUsing = true;
}
// Update is called once per frame
void Update()
{
// Handle firing
if (StartUsing)
{
CmdPlay();
StartUsing = false;
}
}
void CmdPlay()
{
photonView.RPC("NetPlay", PhotonTargets.All);
}
[PunRPC]
void NetPlay()
{
LeftSpeaker.Play();
}
}
}
您可能会看到,我是一个初学者。使用此代码,当我将手放在多维数据集中并按触发器时,什么也没发生。如果有人可以提供任何帮助甚至替代方案,我将非常感激。
亲切的问候, 音乐博物馆