Unity3d Photon custom room 属性 制作倒数计时器的问题
Unity3d Photon custom room property problem for making countdown timer
我正在尝试使用自定义属性为添加我的游戏比赛制作倒数计时器。但我被困在某个地方。计时器正在工作,但它不会与稍后加入的其他客户同时显示。我的脚本在这里:
public float Totaltime = 600;
void Update()
{
Totaltime -= Time.deltaTime;
StartCountDownTimer(Totaltime);
}
void StartCountDownTimer(float totalSeconds)
{
Hashtable ht = new Hashtable() { { "startTime", totalSeconds } };
PhotonNetwork.room.SetCustomProperties(ht);
float updatedSecond = (float)PhotonNetwork.room.CustomProperties["startTime"];
int minutes = Mathf.FloorToInt(updatedSecond / 60f);
int seconds = Mathf.RoundToInt(updatedSecond % 60f);
string formatedSeconds = seconds.ToString();
if (seconds == 60)
{
seconds = 0;
minutes += 1;
}
}
代码逻辑有问题。您应该只在主客户端上设置开始时间。其他客户端在本地客户端读取开始时间并计算剩余时间。倒计时结束后,主客户端发送RPC调用通知其他客户端进行下一步。
我正在尝试使用自定义属性为添加我的游戏比赛制作倒数计时器。但我被困在某个地方。计时器正在工作,但它不会与稍后加入的其他客户同时显示。我的脚本在这里:
public float Totaltime = 600;
void Update()
{
Totaltime -= Time.deltaTime;
StartCountDownTimer(Totaltime);
}
void StartCountDownTimer(float totalSeconds)
{
Hashtable ht = new Hashtable() { { "startTime", totalSeconds } };
PhotonNetwork.room.SetCustomProperties(ht);
float updatedSecond = (float)PhotonNetwork.room.CustomProperties["startTime"];
int minutes = Mathf.FloorToInt(updatedSecond / 60f);
int seconds = Mathf.RoundToInt(updatedSecond % 60f);
string formatedSeconds = seconds.ToString();
if (seconds == 60)
{
seconds = 0;
minutes += 1;
}
}
代码逻辑有问题。您应该只在主客户端上设置开始时间。其他客户端在本地客户端读取开始时间并计算剩余时间。倒计时结束后,主客户端发送RPC调用通知其他客户端进行下一步。