最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity UGUI實(shí)現(xiàn)滑動翻頁效果

 更新時間:2020年04月17日 17:08:19   作者:同燈花城  
這篇文章主要為大家詳細(xì)介紹了Unity UGUI實(shí)現(xiàn)滑動翻頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Unity UGUI實(shí)現(xiàn)滑動翻頁效果的具體代碼,供大家參考,具體內(nèi)容如下

這個問題真的是老生常談的事情了,不過在這里還是要說一下,以便以后之需

首先看一下效果圖

最后在Content下面是一些Image

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using System;
 
public class PageView : MonoBehaviour, IBeginDragHandler, IEndDragHandler {
  ScrollRect rect;      //滑動組件 
 //public ScrollRect rect2;      //滑動組件2 
 
 private float targethorizontal = 0;    //滑動的起始坐標(biāo) 
 private bool isDrag = false;     //是否拖拽結(jié)束 
 private List<float> posList = new List<float> ();//求出每頁的臨界角,頁索引從0開始 
 private int currentPageIndex = -1;
 public Action<int> OnPageChanged;
 
 private bool stopMove = true;
 public float smooting = 4;  //滑動速度 
 public float sensitivity = 0;
 private float startTime;
 
 private float startDragHorizontal; 
 
 
 void Awake () {
  // rect = rect2;
  rect = transform.GetComponent<ScrollRect> ();
  // rect2 = transform.GetComponent<ScrollRect>();
  float horizontalLength = rect.content.rect.width - GetComponent<RectTransform> ().rect.width;
  //float horizontalLength2 = rect2.content.rect.width - GetComponent<RectTransform>().rect.width;
  posList.Add (0);
  for(int i = 1; i < rect.content.transform.childCount - 1; i++) {
   posList.Add (GetComponent<RectTransform> ().rect.width * i / horizontalLength);
  }
  posList.Add (1);
 }
 
 void Update () {
  if(!isDrag && !stopMove) {
   startTime += Time.deltaTime;
   float t = startTime * smooting;
   rect.horizontalNormalizedPosition = Mathf.Lerp (rect.horizontalNormalizedPosition , targethorizontal , t);
   // rect2.horizontalNormalizedPosition = Mathf.Lerp(rect2.horizontalNormalizedPosition, targethorizontal, t);
   if (t >= 1)
    stopMove = true;
  }
 }
 
 public void pageTo (int index) {
  if(index >= 0 && index < posList.Count) {
   rect.horizontalNormalizedPosition = posList[index];
   SetPageIndex(index);
  } else {
   Debug.LogWarning ("頁碼不存在");
  }
 }
 private void SetPageIndex (int index) {
  if(currentPageIndex != index) {
   currentPageIndex = index;
   if(OnPageChanged != null)
    OnPageChanged (index);
  }
 }
 
 public void OnBeginDrag (PointerEventData eventData) {
  isDrag = true;
  startDragHorizontal = rect.horizontalNormalizedPosition;
  // startDragHorizontal = rect2.horizontalNormalizedPosition;
 }
 
 public void OnEndDrag (PointerEventData eventData) {
  float posX = rect.horizontalNormalizedPosition;
  posX += ((posX - startDragHorizontal) * sensitivity);
  posX = posX < 1 ? posX : 1;
  posX = posX > 0 ? posX : 0;
  int index = 0;
  float offset = Mathf.Abs (posList[index] - posX);
  for(int i = 1; i < posList.Count; i++) {
   float temp = Mathf.Abs (posList[i] - posX);
   if(temp < offset) {
    index = i;
    offset = temp;
   }
  }
  SetPageIndex (index);
 
  targethorizontal = posList[index]; //設(shè)置當(dāng)前坐標(biāo),更新函數(shù)進(jìn)行插值 
  isDrag = false;
  startTime = 0;
  stopMove = false;
 } 
}

最后看一下,怎么設(shè)置的:

剩下的就沒有什么了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#命令模式用法實(shí)例

    C#命令模式用法實(shí)例

    這篇文章主要介紹了C#命令模式用法,以實(shí)例形式較為詳細(xì)的分析了C#命令模式的功能、定義及使用技巧,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    C#實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)繪制隨機(jī)噪點(diǎn)和直線,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C#中DataTable刪除行的方法分析

    C#中DataTable刪除行的方法分析

    這篇文章主要介紹了C#中DataTable刪除行的方法,包括了常見的幾種刪除方法的分析,需要的朋友可以參考下
    2014-09-09
  • C# 如何使用OpcUaHelper讀寫OPC服務(wù)器

    C# 如何使用OpcUaHelper讀寫OPC服務(wù)器

    這篇文章給大家介紹C# 如何使用OpcUaHelper讀寫OPC服務(wù)器,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-12-12
  • WPF實(shí)現(xiàn)平面三角形3D運(yùn)動效果

    WPF實(shí)現(xiàn)平面三角形3D運(yùn)動效果

    這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)平面三角形3D運(yùn)動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C#中跨線程訪問控件的實(shí)現(xiàn)方法

    C#中跨線程訪問控件的實(shí)現(xiàn)方法

    C#中不允許跨線程直接訪問界面控件,即一個線程中如主線程創(chuàng)建的控件不允許被其他線程例如子線程直接訪問,在一個線程中設(shè)置其他線程所有的控件屬性通常有兩種方法,本文將詳細(xì)的給大家介紹一下,需要的朋友可以參考下
    2024-12-12
  • 對int array進(jìn)行排序的實(shí)例講解

    對int array進(jìn)行排序的實(shí)例講解

    下面小編就為大家分享一篇對int array進(jìn)行排序的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 在C#程序中注入惡意DLL的方法詳解

    在C#程序中注入惡意DLL的方法詳解

    為什么?Windbg?附加到?C#?程序后,程序就處于中斷狀態(tài)了?它到底是如何實(shí)現(xiàn)的?其實(shí)簡而言之就是線程的遠(yuǎn)程注入,這一篇就展開說一下
    2022-09-09
  • C#實(shí)現(xiàn)的UDP收發(fā)請求工具類實(shí)例

    C#實(shí)現(xiàn)的UDP收發(fā)請求工具類實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)的UDP收發(fā)請求工具類,結(jié)合具體實(shí)例形式分析了C#針對UDP請求的監(jiān)聽、接收、發(fā)送等相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • C#中實(shí)現(xiàn)契約測試的方法

    C#中實(shí)現(xiàn)契約測試的方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)契約測試,在本文中,我將揭開契約測試的神秘面紗,并向您展示如何在 C# 項(xiàng)目中實(shí)現(xiàn)它,需要的朋友可以參考下
    2023-09-09

最新評論

新和县| 乃东县| 修水县| 台中县| 霍林郭勒市| 阳江市| 平罗县| 黔东| 青海省| 马鞍山市| 平度市| 淮南市| 兴化市| 文安县| 乌鲁木齐县| 定南县| 齐齐哈尔市| 当涂县| 疏勒县| 平度市| 阿拉尔市| 师宗县| 永城市| 台东县| 绥芬河市| 中西区| 神池县| 沂南县| 崇信县| 历史| 武平县| 兴海县| 棋牌| 无锡市| 交口县| 浦县| 册亨县| 通海县| 白朗县| 西平县| 普陀区|