Я использую пакет GoogleVR, и у меня есть эта сетка, которая работает (в том смысле, что она делает объект, на который я смотрю больше). Поведение, которое я бы хотел, - это щелкнуть, просмотрев объект примерно на три секунды. Объект в настоящее время имеет триггер событий, но как я могу подождать три секунды, а затем нажать?Unity VR autoclick через несколько секунд
1
A
ответ
0
Когда вы смотрите на объект, триггер активируется правильно? Затем, когда вы обнаружите срабатывание триггера, просто создайте функцию, которая ждет 3 секунды, а затем сделайте то, что вы хотите.
Не забудьте остановить ожидание, если пользователь начнет искать где-то еще.
0
Я написал этот сценарий некоторое время назад, он отлично работает с кнопками:
[RequireComponent(typeof(Button))]
public class InteractiveItem : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
{
public Image progressImage; // add an image as child of button and set its image type to Filled. And assign it here.
public bool isEntered = false;
float GazeActivationTime = 3f;
float timeElapsed;
Button _button;
void Start()
{
_button = GetComponent<Button>();
}
void fillProgress(float value)
{
if (progressImage != null)
{
progressImage.fillAmount = value;
}
}
void Update()
{
if(isEntered)
{
timeElapsed += Time.deltaTime;
fillProgress(Mathf.Clamp(timeElapsed/GazeActivationTime,0,1));
if(timeElapsed >= GazeActivationTime)
{
timeElapsed = 0;
_button.onClick.Invoke();
fillProgress(0);
isEntered = false;
}
}
else
{
timeElapsed = 0;
}
}
void OnDisable()
{
if (this.enabled)
{
isEntered = false;
fillProgress(0);
}
}
#region IPointerEnterHandler implementation
public void OnPointerEnter (PointerEventData eventData)
{
if (_button.IsInteractable())
{
isEntered = true;
}
}
#endregion
#region IPointerExitHandler implementation
public void OnPointerExit (PointerEventData eventData)
{
if (!_button.IsInteractable())
return;
try
{
isEntered = false;
fillProgress(0);
}
catch (System.Exception ex)
{
Debug.LogError(ex.Message);
}
}
#endregion
#region IPointerClickHandler implementation
public void OnPointerClick (PointerEventData eventData)
{
isEntered = false;
timeElapsed = 0;
fillProgress(0);
}
#endregion
}
Смежные вопросы
- 1. Unity 5.2 внезапная авария VR
- 2. Как отправить данные с устройства VR для Unity через Bluetooth?
- 3. Google VR Unity SDK - невозможно обнаружить Touch в режиме VR
- 4. SVProgressHud исчезает через несколько секунд
- 5. ionicModal исчезает через несколько секунд
- 6. NSTimer останавливается через несколько секунд
- 7. Включить опцию через несколько секунд
- 8. OpenTK.Graphics.GraphicsContextException через несколько секунд работает
- 9. Добавить подвид через несколько секунд
- 10. Скрыть div через несколько секунд
- 11. UI исчезает через несколько секунд
- 12. Обмен изображениями через несколько секунд
- 13. UINavigationItem появляется через несколько секунд
- 14. Change ImageView через несколько секунд
- 15. Unity VR LandscapeLeft не работает в iOS
- 16. Unity WebView для Android Приложение VR
- 17. Изменение FOV в приложении Unity VR
- 18. Autoclick в Android
- 19. Приложение Daydream Hybrid (NonVR/VR) не переключает режим VR
- 20. Как исчезнуть div через несколько секунд
- 21. Добавить товары автоматически ListView через несколько секунд
- 22. Как скрыть флеш-сообщение через несколько секунд?
- 23. Перезагрузка через несколько секунд после завершения программы
- 24. Как сделать невидимым TextBlock через несколько секунд?
- 25. зачем принудительно закрывать сервис через несколько секунд?
- 26. Как сделать паузу через несколько секунд
- 27. Почему Red5 закрывается через несколько секунд бездействия?
- 28. Auto show div через несколько секунд javascript
- 29. C# UDP Multicast отключается через несколько секунд
- 30. Python таймаут функции через несколько секунд