首页 > 代码库 > GoogleVR实现一个视选的等待数秒触发的实现例子
GoogleVR实现一个视选的等待数秒触发的实现例子
Gvr的一个视选等待时间的例子,这里我想达到让视选等待几秒的作用,通过UGUI显示一个Load图标,类似于技能的冷缩倒计时,当计时完成的时候,才触发一定的事件,达到视选等待数秒的交互效果。
using UnityEngine;using System.Collections;using UnityEngine.UI;public class WaitFor : MonoBehaviour{ public static float timeDuration { get; set; } public float duration=0.01f; // Use this for in itialization bool isFill = true; //当视选进入的时候触发 public void FillIn() { if(isFill) { gameObject.SetActive(true); isFill = false; StartCoroutine(WaitForit()); } } public void FillOut() { gameObject.SetActive(false); isFill = true; Debug.Log("111"); this.gameObject.GetComponent<Image>().fillAmount = 0f; } //这里设置一个协程来控制UI 的显示 IEnumerator WaitForit() { for(float i=0;i<=100;i++) { this.gameObject.GetComponent<Image>().fillAmount =0.01f*i; yield return new WaitForSeconds(duration); Debug.Log("3333"); } timeDuration = this.gameObject.GetComponent<Image>().fillAmount; isFill = true; } public static bool IsGo() { if (timeDuration == 1) { return true; } else return false; }}
这里主要有三个方法,主要用到的有两个,下面我粗略做一下说明,代码写的还是有点简单的,可能还存在一些可优化的地方,以后有机会再改正。
//当视选进入的时候触发 public void FillIn() { if(isFill) { gameObject.SetActive(true);//这里将此gameobject的SetActive设置为true,重新接收事件 的触发 isFill = false; StartCoroutine(WaitForit());//开启一个协程 } }
//当视选离开物体的时候触发,并且使协程立刻停止,之前试过了StopCoroutine(WaitForit)但是发生了一个问题,无法立刻停止协程的执行,这是我开发过程遇到过的问题,希望以后开发过程中遇到
此问题可以起到借鉴的作用
public void FillOut() { gameObject.SetActive(false);//这里可以将SetActive设置为false,立刻停止协程的执行 isFill = true; Debug.Log("111"); this.gameObject.GetComponent<Image>().fillAmount = 0f; }
下面是我写的协程的代码,主要原理是通过是指imageUI下面的fiiAmount属性来达到慢慢填充的目的,最终达到等待的效果
IEnumerator WaitForit() { for(float i=0;i<=100;i++) { this.gameObject.GetComponent<Image>().fillAmount =0.01f*i;//fillAmount属性的设置 yield return new WaitForSeconds(duration); Debug.Log("3333"); } timeDuration = this.gameObject.GetComponent<Image>().fillAmount; isFill = true; }
这里是image上组件的设置
GoogleVR实现一个视选的等待数秒触发的实现例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。