我正在使用 UNet。我在现场有两个游戏玩家。其中之一是服务器,其中之一是客户端。我可以使用 [Command] 和 [ClientRPC] 获取客户端数据,但我无法将数据从服务器发送到客户端,我该如何解决这个问题?注意:服务器也是玩家。
这是我从客户端向服务器发送数据的代码:
[Command]
void CmdSendDizilimToServer(string dizilim){
if (isLocalPlayer)
RpcSetPlayerDizilim(dizilim);
else
this.Sira = dizilim;
}
[ClientRpc]
void RpcSetPlayerDizilim(string dizilim){
this.Sira = dizilim;
}
“地子林”的意思是“序列”。“Sira”的意思是“命令”。
实际上在服务器和客户端都有自己的“订单”字符串。游戏开始时产生一个游戏对象。我希望服务器获取客户端“订单”脚本(我可以这样做)客户端获取服务器“订单”字符串(我不能这样做)。我该如何解决?
这是我生成的玩家对象脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;
public class MultiPlayerOyunKontrol : NetworkBehaviour {
CreateCharacter cc;
public string Sira;
GameObject EnemyObject;
[SyncVar (hook = "DizilimGetir")]
string OyuncuDizilimi;
// Use this for initialization
void Start () {
if (!isLocalPlayer)
{
this.gameObject.name = "Oyuncu2";
OyuncuDizilimi = PlayerPrefs.GetString("Player Dizilim");
}
else
gameObject.name = "Oyuncu1";
}
// Update is called once per frame
void Update () {
}
public override void OnStartLocalPlayer(){
//CmdSendNameToServer (PlayerPrefs.GetString("Player Name"));
CmdSendDizilimToServer (PlayerPrefs.GetString ("Player Dizilim"));
}
[Command]
void CmdDusmanAktif(){
RpcAktiflestir ();
}
[Command]
void CmdSendNameToServer(string nameToSend)
{
RpcSetPlayerName(nameToSend);
}
[Command]
void CmdSendDizilimToServer(string dizilim){
if (isLocalPlayer)
RpcSetPlayerDizilim(dizilim);
else
this.Sira = dizilim;
}
[ClientRpc]
void RpcAktiflestir(){
EnemyObject = GameObject.FindGameObjectWithTag ("DusmanKarakterleri");
EnemyObject.SetActive (true);
}
[ClientRpc]
void RpcSetPlayerName(string name)
{
this.gameObject.name = name;
}
[ClientRpc]
void RpcSetPlayerDizilim(string dizilim){
this.Sira = dizilim;
}
void DizilimGetir(string dizilim) {
if(!isLocalPlayer)
this.Sira = dizilim;
}
}