Попробуйте синхронизировать списки между клиентами и клиентом/хостом.C#

Место общения программистов C#
Ответить
Anonymous
 Попробуйте синхронизировать списки между клиентами и клиентом/хостом.

Сообщение Anonymous »

Я использую Unity и Netcode для игровых объектов. Я хочу создать свою собственную карточную игру, поэтому мне нужен синхронизированный список карт, который контролируется сервером/хостом.
Для начала я хотел синхронизировать список (колоду) из какие отдельные клиенты могут удалять строки и добавлять их в свой список (PlayerCards). После этого колода должна быть синхронизирована для всех.

Код: Выделить всё

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Netcode;

public class PlayerNetwork : NetworkBehaviour
{
//Cards in the Deck to draw
List Deck = new List();
//Cards on each Player
List PlayerCards = new List();

private void Start()
{
Deck.Add("Card1");
Deck.Add("Card2");
Deck.Add("Card3");
Deck.Add("Card4");
Deck.Add("Card5");
}
void Update()
{
if (!IsOwner)
{
return;
}
if (Input.GetKeyDown(KeyCode.T))
{
CardServerRpc(OwnerClientId);
}
}
[ClientRpc]
private void UpdateCardsClientRpc()
{
Deck.RemoveAt(0);
Debug.Log("Id:" + OwnerClientId);
}
[ClientRpc]
private void AddCardsToPlayerCardClientRpc(ClientRpcParams clientRpcParams)
{
Debug.Log("Id:" + OwnerClientId +"Card:" + Deck[0]);
PlayerCards.Add(Deck[0]);
}

[ServerRpc]
private void CardServerRpc(ulong index)
{
if (Deck.Count >0)
{
AddCardsToPlayerCardClientRpc(new ClientRpcParams { Send = new ClientRpcSendParams { TargetClientIds = new List { index } } });
UpdateCardsClientRpc();
}
}
}
2 балла:
  • Если я вызываю от клиента ServerRpc, а ServerRpc вызывает ClientRpc, и у меня есть 2 Клиенты, не следует ли дважды вызывать отладку в консоли? Когда я нажимаю T, я вижу в консоли сообщение только от клиента, который использую в данный момент.
  • Только клиент, который я открываю в Unityeditor, а не клиент сборки, может добавлять Карта игроку


Подробнее здесь: https://stackoverflow.com/questions/785 ... lient-host
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»