Как перейти от одной сцены к другой, глядя на объект в единстве?

Я разрабатываю приложение, используя Unity где я создал два Scene's. если пользователь смотрит на объект в Scene 1 это должно идти к Scene 2, У меня есть код ниже, но я получаю ошибки.

ИСХОДНЫЙ КОД:-

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class time : MonoBehaviour {

    public float gazeTime = 2f;

    private float timer;

    private bool gazedAt;


    // Use this for initialization
    void Start () {

    }
    void update(){
        if (gazedAt)
        {
            timer += Time.deltaTime;

            if (timer >= gazeTime)
            {

                Application.LoadLevel (scenetochangeto);

                timer = 0f;
            }

        }

    }
    public void ss(string scenetochangeto)
    {
        gameObject.SetActive (true);
    }

    public void pointerenter()
    {



        //Debug.Log("pointer enter");
        gazedAt = true;
    }

    public void pointerexit()
    {
        //Debug.Log("pointer exit");
        gazedAt = false;
    }
    public void pointerdown()
    {
        Debug.Log("pointer down");
    }
}

2 ответа

Решение

Вы должны инициализировать ваши переменные с правильными значениями и использовать менеджер сцены для загрузки новой сцены следующим образом:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.EventSystems;

public class time : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler {

    public float gazeTime = 2f;
    private float timer = 0f;
    private bool gazedAt = false;

    // Use this for initialization
    void Start () {

    }
    void Update(){
        if (gazedAt)
        {
            timer += Time.deltaTime;
            if (timer >= gazeTime)
            {
                SceneManager.LoadScene("OtherSceneName");
                timer = 0f;
            }
        }
    }
    public void ss(string scenetochangeto)
    {
        gameObject.SetActive (true);
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        //Debug.Log("pointer enter");
        gazedAt = true;
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        //Debug.Log("pointer exit");
        gazedAt = false;
    }
}

Изменить "OtherSceneName" с названием сцены, которую нужно загрузить (scenetochangeto).

Вы не указали ошибки, которые получили, но обратите внимание: Update() это "специальная" функция движка Unity, для которой требуется заглавная буква U. Она никогда не будет работать так, как сейчас.

Другие вопросы по тегам