私はUNetを使用しています。私には2人のゲーマーがいます。そのうちの1つはサーバーで、そのうち1つはクライアントです。 [Command]と[ClientRPC]でクライアントデータを取得できますが、サーバーからクライアントにデータを送信できません。どうすればこの問題を解決できますか? 注:サーバーはプレーヤーでもあります。Unity Unetを使用してサーバからクライアントにデータを送信する方法
[Command]
void CmdSendDizilimToServer(string dizilim){
if (isLocalPlayer)
RpcSetPlayerDizilim(dizilim);
else
this.Sira = dizilim;
}
[ClientRpc]
void RpcSetPlayerDizilim(string dizilim){
this.Sira = dizilim;
}
'Dizilim' 手段 '配列':ここで
は私のサーバーコードにクライアントからのデータを送信しています。 'Sira'は 'Order'を意味します。
実際には、サーバーとクライアントには独自の「注文」文字列があります。 1つのゲームオブジェクトを始めるゲームが生まれたとき。そして、私はサーバーがクライアント '注文'スクリプトを取得したい(私はこれを行うことができます)クライアントはサーバー '注文'文字列を取得する(私はそれを行うことはできません)。どうすればそれを解決できますか?
それは私の生まれた選手オブジェクトスクリプトです:私は私の質問を解決
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;
}
}
私は[この質問](https://stackoverflow.com/questions/48487614/unity-networking-how-can-i-sync-vars-on-all-clients)に掲載されている同様の問題があります。私はあなたの答えを見るが、私はどのように変数の状態をサーバーから読み取ることを達成していない。クライアントからサーバによって制御されるオブジェクトから値を取得する方法をより良く説明できますか?私の場合、私は何のためにも 'OnGUI()'を使いません。 – SebasSBM