VR Navigation Button / LoadLevel after 2 seconds

Hello Folks, Im creating an application with Google VR SDK to visualize with the Samsung Gear VR, I need your help with this:
I create a button that when I look for 2 seconds this takes me to another scene, until here everything works ok.

ISSUE:
When I look at the button and look away from the collider area before the 2 seconds ends , and when i look at the button again, I need that the timer restart from the beginning 2 seconds, right now the time continuous since I look the button the last time I enter to the collider area.

I leave a video showing what happens and the script I’m using

Really appreciate your help

 #pragma strict

var timer : float = 1;

function Update ()
{
    timer -= Time.deltaTime;
   
    if(timer <= 0)
    {
        Application.LoadLevel("esc 2");
    }
}

OnPointerExit timer = 1f.

Here is 2 different tutorials, both have the answer to your question.

1 Like

Thank u Selzier, im still working on this vr loading button, It’s driving me crazy !!!
i really appreciate if you can help me whit this, i amouts done…

Hello Folks, Im creating an application with Google VR SDK. I have a button that has a animated sequence of maps that simulates the animation of loading, when i look the button this animated secuence activated. The problem I have is when I remove the look of the button the texture freeze on the map from where you remove the look of the button, what I need to happen is when I remove the look of the button, the animated secuence returns to the initial texture.

My problem here

For the animated sequence I use this script that I found on internet Unity: Animated texture from image sequence - Part 1 | 41 Post

using UnityEngine; // 41 Post - Created by DimasTheDriver on Apr/20/2012 . Part of the 'Unity: Animated texture from image sequence' post series. Available at: http://www.41post.com/?p=4742
using System.Collections; //Script featured at Part 2 of the post series.

public class ImageSequenceSingleTexture : MonoBehaviour
{
    //A texture object that will output the animation
    private Texture texture;
    //With this Material object, a reference to the game object Material can be stored
    private Material goMaterial;
    //An integer to advance frames
    private int frameCounter = 0;
   
    //A string that holds the name of the folder which contains the image sequence
    public string folderName;
    //The name of the image sequence
    public string imageSequenceName;
    //The number of frames the animation has
    public int numberOfFrames;
   
    //The base name of the files of the sequence
    private string baseName;
   
    void Awake()
    {
        //Get a reference to the Material of the game object this script is attached to
        this.goMaterial = this.GetComponent<Renderer>().material;
        //With the folder name and the sequence name, get the full path of the images (without the numbers)
        this.baseName = this.folderName + "/" + this.imageSequenceName;
    }
   
    void Start ()
    {
        //set the initial frame as the first texture. Load it from the first image on the folder
        texture = (Texture)Resources.Load(baseName + "00000", typeof(Texture));
    }
   
    void Update ()
    {
        //Start the 'PlayLoop' method as a coroutine with a 0.04 delay 
        StartCoroutine("PlayLoop", 0.08f);
        //Set the material's texture to the current value of the frameCounter variable
        goMaterial.mainTexture = this.texture;
    }
   
    //The following methods return a IEnumerator so they can be yielded:
    //A method to play the animation in a loop
    IEnumerator PlayLoop(float delay) 
    { 
        //wait for the time defined at the delay parameter 
        yield return new WaitForSeconds(delay); 
       
        //advance one frame
        frameCounter = (++frameCounter)%numberOfFrames;
       
        //load the current frame
        this.texture = (Texture)Resources.Load(baseName + frameCounter.ToString("D5"), typeof(Texture));
       
        //Stop this coroutine 
        StopCoroutine("PlayLoop"); 
    }
   
    //A method to play the animation just once
    IEnumerator Play(float delay) 
    { 
        //wait for the time defined at the delay parameter 
        yield return new WaitForSeconds(delay); 
       
        //if it isn't the last frame
        if(frameCounter < numberOfFrames-1)
        {
            //Advance one frame
            ++frameCounter;
           
            //load the current frame
            this.texture = (Texture)Resources.Load(baseName + frameCounter.ToString("D5"), typeof(Texture));
        }

        //Stop this coroutine 
        StopCoroutine("Play"); 
    }
}