中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity如何實現引導頁效果

發布時間:2020-08-03 11:23:11 來源:億速云 閱讀:235 作者:小豬 欄目:編程語言

這篇文章主要講解了Unity如何實現引導頁效果,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

效果圖:

Unity如何實現引導頁效果

1、創建Canvas,設置RenderMode=ScreenSpace-Overlay,UIScaleMode = ScaleWithScreenSize,
ReferenceResolution(x=1080,y=1920)

2、創建一個RawImage,命名為(parentGoImg),并做如下設置

Unity如何實現引導頁效果

3、在parentGoImg下建幾個RawImage,賦予想展示的圖片,并做如下設置

Unity如何實現引導頁效果

4、添加如下腳本給parentGoImg

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

public class Asd : MonoBehaviour,IBeginDragHandler, IDragHandler,IEndDragHandler
{
  /// <summary>
  /// 可移動的最大最小X軸坐標
  /// </summary>
  private float minX, maxX;
  /// <summary>
  /// 開始觸摸時,算出偏移值,防止跳變
  /// </summary>
  private float offsetX;

  /// <summary>
  /// 靈敏度
  /// </summary>
  private float sensitivityX;
  /// <summary>
  /// 當前顯示第幾頁
  /// </summary>
  private int currentShowIndex = 1;

  private void Start()
  {
    (transform as RectTransform).pivot = new Vector2(0, 0.5f);
    Debug.Log(Screen.width + "  " + Screen.height);
    for (int i = 0; i < transform.childCount; i++)
    {
      (transform.GetChild(i) as RectTransform).sizeDelta = new Vector2(0, 0);
      //canvas的RenderMode要設置成Overlay形式
      //這里i*1080是因為canvas的UIScaleMode設置成了ScaleWithScreenSize,Resolution為x=1080,y=1920
      //如果canvas的UIScaleMode設置成ConstantPixelSize則吧這里的i*1080改成i*Screen.width
      (transform.GetChild(i) as RectTransform).anchoredPosition = new Vector2(i * 1080.0f, 0);
    }

    minX = -((transform.childCount - 1) * Screen.width);
    maxX = 0.0f;
    //如果移動超過頁面的五分之一,則切換頁面
    sensitivityX = Screen.width / 5;
  }

  public void OnBeginDrag(PointerEventData eventData)
  {
    offsetX = transform.position.x - Input.mousePosition.x;
  }

  public void OnDrag(PointerEventData eventData)
  {
    //將物體坐標限制在最大最小X軸坐標內
    transform.position = new Vector2(Input.mousePosition.x + offsetX, transform.position.y);
    if (transform.position.x <= minX)
    {
      transform.position = new Vector2(minX, transform.position.y);
    }
    else if (transform.position.x >= maxX)
    {
      transform.position = new Vector2(maxX, transform.position.y);
    }
  }

  public void OnEndDrag(PointerEventData eventData)
  {
    //判斷坐標,是否需要切換頁面
    if (transform.position.x > GetLeftX())
    {
      currentShowIndex--;
    }
    else if (transform.position.x < GetRightX())
    {
      currentShowIndex++;
    }
    transform.DOMoveX(-(currentShowIndex - 1) * Screen.width, 0.2f);
  }

  float GetLeftX() {
    return -((currentShowIndex - 1) * Screen.width - sensitivityX);
  }

  float GetRightX() {
    return -((currentShowIndex - 1) * Screen.width + sensitivityX);
  }
}

運行即可看到效果

看完上述內容,是不是對Unity如何實現引導頁效果有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永平县| 翼城县| 建湖县| 海南省| 楚雄市| 武鸣县| 太谷县| 澎湖县| 万载县| 宝鸡市| 汤原县| 南召县| 修文县| 鲁甸县| 武清区| 闽侯县| 菏泽市| 台州市| 商水县| 济南市| 宜昌市| 嘉鱼县| 讷河市| 枣强县| 临城县| 临沧市| 惠东县| 克山县| 巧家县| 陆丰市| 景谷| 来凤县| 基隆市| 新源县| 通城县| 赤城县| 长垣县| 泰宁县| 屏山县| 玉田县| 固安县|