Доброго времени суток... Я делал мультиплеер для своей Игры настроил NetworkManager, PlayerSpawn... Но процедуральной карте нужен "Наблюдатель" т.е. Игрок из-за которого прогрузится карта... И тут встал спор между скриптом EndlessTerrain.cs и NetworkManager так как Player спавнится при подключении к серверу а скрипт игрока не видит т.е. не может найти "Наблюдателя"... Помогите! Заранее Спасибо!
P.S Вот часть сценария с ошибкой:
public Transform viewer;
public Material mapMaterial;
public static Vector2 viewerPosition;
Vector2 viewerPositionOld;
static MapGenerator mapGenerator;
int chunkSize;
int chunksVisibleInViewDst;
Dictionary<Vector2, TerrainChunk> terrainChunkDictionary = new Dictionary<Vector2, TerrainChunk>();
static List<TerrainChunk> terrainChunksVisibleLastUpdate = new List<TerrainChunk>();
void Start() {
mapGenerator = FindObjectOfType<MapGenerator> ();
maxViewDst = detailLevels [detailLevels.Length - 1].visibleDstThreshold;
chunkSize = mapGenerator.mapChunkSize - 1;
chunksVisibleInViewDst = Mathf.RoundToInt(maxViewDst / chunkSize);
UpdateVisibleChunks ();
}
void Update() {
viewerPosition = new Vector2 (viewer.position.x, viewer.position.z) / mapGenerator.terrainData.uniformScale;
//Вот здесь
if ((viewerPositionOld - viewerPosition).sqrMagnitude > sqrViewerMoveThresholdForChunkUpdate) {
viewerPositionOld = viewerPosition;
UpdateVisibleChunks ();
}
}
P.P.S Схема:
Как вы можете видеть сначала генерируется Noise (Перлин) всё наносится на объект - План, Далее информация компилируется в отдельный файл Data - который в свою очередь можно изменить... Далее MapGenerator Принимает этот файл но далее он отсылает команду 2-ум другим скриптам которые в свои очередь генерируют Меш и Текстуры на Меш всё опять же превращается в отдельный файл и тот считывается MapGenerator'ом... 2 Этих скрипта "Общаются" между MapGenerator'ом, а Noise главный в этом всём.... Дальше MapGenerator считывает MapDisplay - Это скрипт объединяющий все файлы! Далее MapDisplay посылает команду на создание Чанков - EndlessTerrain. Чанки генерируются/исчезают в определенном расстоянии игрока к краю карты (Как в игре Minecraft) но для этого нужен ещё один объект которого нигде нет кроме как в EndlessTerrain - "Наблюдателя". Изъяснил процесс?