Я пытаюсь создать 2D-многопользовательскую игру со случайно сгенерированной картой.
Вот упрощенный код, который я пробовал
public class Map : NetworkBehaviour
{
private TilePainter _tilePainter;
[Command]
public void CmdStartGenerating()
{
_tilePainter.PaintSection(section)//section is randomly generated map information
}
}
public class TilePainter : NetworkBehaviour
{
public Tile tile;
private Tilemap _tilemap;
public void PaintSection(Section section)
{
section.Foreach(x=>{
_tilemap.SetTile(x.Vector3(), tile);
})
}
}
Конечно, я сделал их NetworkIdentity и CmdStartGenerating вызывается нажатием кнопки.
Проблема в том, что сгенерированная карта листов видна только в главном проигрывателе.
Другой клиент не может см. сгенерированную карту тайлов.
В реальном коде TilePainter также создает экземпляры некоторых префабов, и они видны обоим игрокам.
Я пытался сделать их префабами, порождаемыми в сети, но не сработало. (с той же проблемой)
Есть ли какой-либо метод, например NetworkServer.Spawn для тайловой карты ??
Я новичок в многопользовательской функции Unity, поэтому, возможно, я делаю некоторые глупая ошибка ...
Спасибо, что прочитали мой вопрос!
#### Edit
Загрузка дополнительного кода, который я тестировал в тестовой сцене.
public class NetTest : NetworkBehaviour
{
public TileRiverMap tileRiverMap;
private SectionGenerator _sectionGenerator =
new SectionGenerator(10, 20, 1f);
public void Test()
{
Debug.Log("hihi");
tileRiverMap.PaintSection(_sectionGenerator.GenerateSection((0, 0)), 5);
}
}
Класс ниже: Объект игрока
public class TestPlayer : NetworkBehaviour
{
private void FixedUpdate()
{
if (isLocalPlayer)
{
if (Input.GetButtonDown("Jump"))
{
CmdTest();
}
}
}
[Command]
private void CmdTest()
{
FindObjectOfType<NetTest>().Test();
}
}
public class TileRiverMap : NetworkBehaviour, IRiverMap
{
public Tile tile;
public GameObject stone;
private Tilemap _tilemap;
......
}
Я не думаю, что нужен весь код TileRiverMap