欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity使用ScrollRect制作翻頁

 更新時(shí)間:2020年04月17日 10:08:39   作者:非法關(guān)鍵字  
這篇文章主要為大家詳細(xì)介紹了Unity使用ScrollRect制作翻頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了使用ScrollRect制作翻頁的具體代碼,供大家參考,具體內(nèi)容如下

1.標(biāo)準(zhǔn)的層級(jí)結(jié)構(gòu) ScrollRect->ViewPort->Content,Viewport負(fù)責(zé)顯示區(qū)域的大小一般和Mask一起配合使用,Content使用Layout來布局,如果想使用代碼來自動(dòng)定位顯示位置需要在Content加上Content size filter.

2.ScrollRectHelper

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
using System;

public class ScrollRectHelper : MonoBehaviour, IBeginDragHandler, IEndDragHandler
{
  // 滑動(dòng)速度
  public float smooting = 5;

  // 每頁顯示的項(xiàng)目
  [SerializeField]
  private int countPerPage = 10;

  ScrollRect srect;
  // 總頁數(shù)
  float totalPages;
  // 是否拖拽結(jié)束
  bool isDrag = false;
  // 總頁數(shù)索引比列 0-1
  List<float> listPageValue = new List<float> { 0 };
  // 滑動(dòng)的目標(biāo)位置
  public float targetPos = 0;
  // 當(dāng)前位置索引
  float nowindex = 0;                 

  void Awake()
  {
    srect = GetComponent<ScrollRect>();
  }

  public string PageText()
  {
    return (nowindex + 1) + "/" + (totalPages + 1);
  }

  // 計(jì)算每頁比例
  public void CalcListPageValue<T>() where T : MonoBehaviour
  {
    T[] items = srect.content.GetComponentsInChildren<T>();
    srect.content.rect.Set(srect.content.rect.width / 2, srect.content.rect.y, srect.content.rect.width, srect.content.rect.height);
    totalPages = (int)(Math.Ceiling((float)items.Length / countPerPage) - 1);
    if (items.Length != 0)
    {
      for (float i = 1; i <= totalPages; i++)
      {
        //Debug.Log(i / totalPages);
        listPageValue.Add((i / totalPages));
      }
    }
  }

  void Update()
  {
    if (!isDrag)
    {
      srect.horizontalNormalizedPosition = Mathf.Lerp(srect.horizontalNormalizedPosition, targetPos,
        Time.deltaTime * smooting);
    }

    // Debug
    if (Input.GetKeyDown(KeyCode.LeftArrow)) PressLeft();
    if (Input.GetKeyDown(KeyCode.RightArrow)) PressRight();
  }

  /// <summary>
  /// 拖動(dòng)開始
  /// </summary>
  /// <param name="eventData"></param>
  public void OnBeginDrag(PointerEventData eventData)
  {
    isDrag = true;
  }

  /// <summary>
  /// 拖拽結(jié)束
  /// </summary>
  /// <param name="eventData"></param>
  public void OnEndDrag(PointerEventData eventData)
  {
    isDrag = false;
    var tempPos = srect.horizontalNormalizedPosition; //獲取拖動(dòng)的值
    var index = 0;
    float offset = Mathf.Abs(listPageValue[index] - tempPos);  //拖動(dòng)的絕對(duì)值
    for (int i = 1; i < listPageValue.Count; i++)
    {
      float temp = Mathf.Abs(tempPos - listPageValue[i]);
      if (temp < offset)
      {
        index = i;
        offset = temp;
      }
    }
    targetPos = listPageValue[index];
    nowindex = index;
  }

  public void PressLeft()
  {
    nowindex = Mathf.Clamp(nowindex - 1, 0, totalPages);
    targetPos = listPageValue[Convert.ToInt32(nowindex)];
  }

  public void PressRight()
  {
    nowindex = Mathf.Clamp(nowindex + 1, 0, totalPages);
    targetPos = listPageValue[Convert.ToInt32(nowindex)];
  }
}

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

相關(guān)文章

  • C#書寫規(guī)范

    C#書寫規(guī)范

    C#書寫規(guī)范...
    2007-03-03
  • C#使用三層架構(gòu)開發(fā)Winform的詳細(xì)案例

    C#使用三層架構(gòu)開發(fā)Winform的詳細(xì)案例

    這篇文章介紹了C#使用三層架構(gòu)開發(fā)Winform的詳細(xì)案例,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • utf8編碼檢測(cè)方法分享

    utf8編碼檢測(cè)方法分享

    這篇文章主要介紹了utf8編碼檢測(cè)方法示例,需要的朋友可以參考下
    2014-02-02
  • C#實(shí)現(xiàn)簡(jiǎn)易點(diǎn)餐功能

    C#實(shí)現(xiàn)簡(jiǎn)易點(diǎn)餐功能

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)易點(diǎn)餐功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Winform窗體傳值的方法(示例)

    Winform窗體傳值的方法(示例)

    C#開發(fā)windows應(yīng)用程序項(xiàng)目時(shí),不同窗口之間傳值有很多中方法,在此給大家介紹兩種比較常用的winform窗體傳值的方法,有需要的朋友可以參考下
    2015-08-08
  • C#讀取靜態(tài)類常量屬性和值的實(shí)例講解

    C#讀取靜態(tài)類常量屬性和值的實(shí)例講解

    在本篇文章里小編給各位分享的是關(guān)于C#讀取靜態(tài)類常量屬性和值的實(shí)例講解,有興趣的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • C#代碼延時(shí)的幾種實(shí)現(xiàn)

    C#代碼延時(shí)的幾種實(shí)現(xiàn)

    本文主要介紹了C#代碼延時(shí)的幾種實(shí)現(xiàn),主要介紹了三種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C# 實(shí)現(xiàn)顏色的梯度漸變案例

    C# 實(shí)現(xiàn)顏色的梯度漸變案例

    這篇文章主要介紹了C# 實(shí)現(xiàn)顏色的梯度漸變案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#配置文件設(shè)置及應(yīng)用詳解

    C#配置文件設(shè)置及應(yīng)用詳解

    在軟件開發(fā)過程中,配置文件是常用的一個(gè)功能,用于在程序運(yùn)行時(shí)調(diào)整應(yīng)用程序的行為,C# 提供了多種方式來創(chuàng)建和使用配置文件,本文將詳細(xì)介紹 C# 配置文件的創(chuàng)建、修改、讀取和寫入,以及跨平臺(tái)配置文件的應(yīng)用,需要的朋友可以參考下
    2024-06-06
  • C#設(shè)計(jì)模式之Strategy策略模式解決007大破密碼危機(jī)問題示例

    C#設(shè)計(jì)模式之Strategy策略模式解決007大破密碼危機(jī)問題示例

    這篇文章主要介紹了C#設(shè)計(jì)模式之Strategy策略模式解決007大破密碼危機(jī)問題,簡(jiǎn)單描述了策略模式的定義并結(jié)合加密解密算法實(shí)例分析了C#策略模式的具體使用方法,需要的朋友可以參考下
    2017-09-09

最新評(píng)論