Автономный режим Photon Cloud не может найти точки возрождения

Я слежу за пользователем: quill18creates на многопользовательской игре FPS на YouTube.

https://www.youtube.com/watch?v=CnKc9k6shQA

У меня возникла проблема при установке для автономного режима значения true. Когда я пытаюсь запустить свое приложение, я получаю

Debug.Log("No spawn spots!!!");

сообщение в журнале консоли. Однако при переключении обратно в онлайн-режим я смогу найти точки возрождения и играть как обычно? Я прикрепил свой код ниже (его также можно увидеть на видео на YouTube).

using UnityEngine;
using System.Collections;

public class NetworkManager : MonoBehaviour {

public Camera standbyCamera;
private SpawnSpot[] spawnSpots;

public bool offlineMode = false;

// Use this for initialization
void Start () {
    Connect ();
    spawnSpots = GameObject.FindObjectsOfType<SpawnSpot> ();
}

// Update is called once per frame
void Update () {

}

void Connect() {
    if (offlineMode) {
        PhotonNetwork.offlineMode = true;
        OnJoinedLobby();
    } else {
        PhotonNetwork.ConnectUsingSettings ("0.0.0.1");
    }
}

void OnGUI() {
    GUILayout.Label (PhotonNetwork.connectionStateDetailed.ToString ());
}

void OnJoinedLobby() {
    Debug.Log ("OnJoinedLobby");
    PhotonNetwork.JoinRandomRoom ();
}

void OnPhotonRandomJoinFailed() {
    Debug.Log ("OnPhotonRandomJoinFailed");
    PhotonNetwork.CreateRoom (null);
}

void OnJoinedRoom() {
    Debug.Log ("OnJoinedRoom");
    SpawnMyPlayer ();

}

void SpawnMyPlayer() {
    Debug.Log ("SpawnMyPlayer");

    if (spawnSpots == null) {
        Debug.Log("No spawn spots!!!");
        return;
    }

    SpawnSpot mySpawnSpot = spawnSpots [Random.Range (0, spawnSpots.Length)];
    GameObject myPlayerGO = (GameObject)PhotonNetwork.Instantiate ("Player", mySpawnSpot.transform.position, mySpawnSpot.transform.rotation, 0);
    myPlayerGO.GetComponent<UnityStandardAssets.Characters.FirstPerson.FirstPersonController>().enabled = true;
    myPlayerGO.GetComponent<AudioSource> ().enabled = true;
    myPlayerGO.transform.FindChild ("FirstPersonCharacter").gameObject.SetActive (true);
    standbyCamera.enabled = false;
}
}

person Paul    schedule 05.11.2015    source источник
comment
В соответствии с вашим кодом переменная spawnSpots инициализируется с помощью GameObject.FindObjectsOfType‹SpawnSpot›(); Unity не может найти объект типа SpawnSpot в сцене в момент вызова Start(). Из кода непонятно, почему этот объект находится в сцене, только если offlineMode == false   -  person photonians    schedule 10.11.2015
comment
Почему тогда работает мультиплеер?   -  person Paul    schedule 10.11.2015


Ответы (1)


Я знаю, что опаздываю, но я считаю, что проблема заключается в функции «Подключиться», измените функцию «Пуск» на:

void Start () {
    spawnPoints = GameObject.FindObjectsOfType<SpawnPoint>();
    Connect();
}
person Chris    schedule 22.12.2015
comment
Я еще не пробовал это решение, хотя почему это работает на многослойных, если их нужно переключать? Кроме того, я не могу подключиться первым. Если вы будете следовать коду, он попытается появиться до того, как будут назначены какие-либо spawnPoints. - person Paul; 22.12.2015