Unity MIrror Network.Spawn работает на хосте, но не на клиентеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Unity MIrror Network.Spawn работает на хосте, но не на клиенте

Сообщение Anonymous »

Уже пару дней я застрял в этой проблеме, связанной с Unity Mirror Framework.
У меня есть кнопка, которую я могу нажать, и которая вызовет CmdEnableReadyUpUIAndResetTime для взаимодействия с сетевым идентификатором. Холст; он проходит, и его видят как владелец, так и клиенты. Но проблема в playerListReadyUpPrefab, который я пытаюсь создать, и который будет представлять имя каждого игрока и статус готовности. Эти префабы появляются только на экране владельца игрового лобби, а подключившиеся клиенты их не видят.

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

using UnityEngine;
using UnityEngine.UI;
using Mirror;
using TMPro;
using System.Collections.Generic;

public class ReadyUpProgressBar : NetworkBehaviour
{
[SerializeField] private int maximum;
[SerializeField] GameObject ReadyUpContainer;
//This is where players are populated: containerForAllPlayers
[SerializeField] private GameObject containerForAllPlayers;

//Holds all gameplayers currently
private SyncList
 localGamePlayersList = new SyncList();

//PlayerItemListPrefab
[SerializeField] private GameObject playerListReadyUpPrefab;

//Map Name
[SerializeField] private TMP_Text mapChosenName;

[Command(requiresAuthority = false)]
public void CMDDisableReadyUpUI()
{
RpcDisableReadyUpUI();
}
[ClientRpc]
public void RpcDisableReadyUpUI()
{
foreach (Transform child in containerForAllPlayers.transform)
{
NetworkServer.Destroy(child.gameObject);
}
}

[Command(requiresAuthority = false)]
public void CmdEnableReadyUpUIAndResetTime(string sceneName)
{
localGamePlayersList.Clear();
foreach (PlayerReadyUpStatus playerObject in FindObjectsByType(FindObjectsSortMode.None))
{
localGamePlayersList.Add(playerObject);
}
//Clear previous player data if any
foreach (Transform child in containerForAllPlayers.transform)
{
NetworkServer.Destroy(child.gameObject);
}
//
// Populate screen with new player data
foreach (PlayerReadyUpStatus playerReadyUpStatus in localGamePlayersList)
{
string playerNameNow;
GameObject playerListItemPrefab = Instantiate(playerListReadyUpPrefab);
foreach (PlayerObjectController player in FindObjectsByType(FindObjectsSortMode.None))
{
if (playerReadyUpStatus.GetPlayerReadyStatusSteamID() == player.PlayerSteamID)
{
playerNameNow = player.PlayerName;
playerListItemPrefab.GetComponent().changePlayerNameText(playerNameNow);
playerListItemPrefab.GetComponent().changePlayerReadyStatus(false);
break;
}
}
playerListItemPrefab.transform.SetParent(containerForAllPlayers.transform);

NetworkServer.Spawn(playerListItemPrefab);

}

}
}

Иерархия:
введите здесь описание изображения.
Только ReadyUpCanvas имеет сетевую идентификацию и сетевое преобразование.< /p>
Пример в игре при запуске скриптов:
введите здесь описание изображения

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

using UnityEngine;
using TMPro;
using System.Collections.Generic;
using Mirror;

public class MapSelectorReadyUp : NetworkBehaviour
{
[SerializeField] ReadyUpProgressBar progressBar;

[Command(requiresAuthority = false)]
public void StartForestMap()
{
RpcStartMap("Forest");
}

[ClientRpc]
private void RpcStartMap(string sceneName)
{
progressBar.CmdEnableReadyUpUIAndResetTime(sceneName);
}
}

В приведенном выше коде есть ссылка на ProgressBar, а у меня есть кнопка с onclick(), которая ссылается на функцию StartForestMap. Это было достигнуто путем создания пустого игрового объекта и перетаскивания на него компонента MapSelectorReadyUp, а затем помещения его в onclick() пользовательского интерфейса Canvas.
Я работаю в Unity 6.
Дайте мне знать, если мне нужно что-то уточнить!

Подробнее здесь: https://stackoverflow.com/questions/793 ... not-client
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Unity MIrror Network.Spawn работает на хосте, но не на клиенте
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Unity MIrror Network.Spawn работает на хосте, но не на клиенте
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Vagrant up не работает по SSH на хосте Linux, но работает на хосте Windows [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Используйте Google Glass Mirror API для сканирования QR-кода
    Anonymous » » в форуме Php
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Поддерживает ли Mirror внутренние классы?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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