Сделать GUI скроллинг в Unity легко. В помощь новичку множество туториалов и официальная справка. Единственным смутным местом может быть скроллинг с затуханием. Как же сделать так, чтобы после того как юзер оторвет палец от экрана, недолгое время постепенно продолжалась прокрутка?
И несмотря на то что стандартный GUI уходит в прошлое, есть еще энтузиасты (в основном работающие на Unity версии 3.5), которым данный мануал может быть полезен.
В данной статье я размещу скрипт скроллинга и распишу каждую строку.
Код
using UnityEngine; using System.Collections;
public class MyScroll : MonoBehaviour {
// дистанция прокручиваемого окна в X и Y осях Vector2 _scrollPosition = Vector2.zero;
// переменная для хранения нажатия Touch _myTouch;
// контент, содержимое окна(которое будет прокручивать) string _content;
// коэффициент затухания public float _factorDamping;
// флаг для определения, оторвал ли юзер палец от экрана bool _flag;
// переменные для определения направления прокрутки (вниз или вверх) float _firstYPos; float _secondYPos;
void Start() { // заполняю экран 200 строками (чтобы было что крутить) for (int i = 0; i < 200; i++) _content += "\n something content something content something content"; }
void FixedUpdate() { // если есть нажатие на экран if (Input.touchCount > 0) { // присваиваем нажатие переменной myTouch _myTouch = Input.GetTouch(0);
// если юзер двигает пальцем по экрану, или касание только что произошло if ((_myTouch.phase == TouchPhase.Moved) || (_myTouch.phase == TouchPhase.Began)) { // ставим флаг _flag = false;
// присваиваем значение первой переменной для определения направления прокрутки _firstYPos = _scrollPosition.y;
// собственно, прокрутка умноженная на _factorDamping (чем он больше, тем быстрее скроллинг) _scrollPosition.y += (_myTouch.deltaPosition.y * _factorDamping); } // если юзер оторвал палец от экрана else if (_myTouch.phase == TouchPhase.Ended) { // присваиваем значение второй переменной для определения направления прокрутки _secondYPos = _scrollPosition.y;
// ставим флаг _flag = true; } }
// если нет нажатия на экран (условие, при котором должен включится дампинг, затухание) else if (Input.touchCount == 0) { // проверка флага (нужно для того, чтобы дампинг не был бесконечным) if (_flag) { // постепенно уменьшаем коэффициент затухания _factorDamping -= 1 * Time.deltaTime;
// определяем направление скроллинга if(_firstYPos < _secondYPos) // прокрутка вверх _scrollPosition.y += _factorDamping; else // прокрутка вниз _scrollPosition.y -= _factorDamping;
// если вышло время, отведенное под затухание if (_factorDamping <= 0) { // ставим флаг _flag = false;
// возвращаем коэффициенту затухания его изначальное значение _factorDamping = 1.5f; } } } } }
Категория: Программирование | Добавил: NEBR (25 Июня 2014)
| Автор: Дмитрий NEBR Кичеев
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Unity GUI скроллинг с затуханием. Touch», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.