Unity UGUI的ScrollRect(滾動視圖)組件的介紹及使用

来源:https://www.cnblogs.com/alianblank/archive/2023/09/06/17683385.html
-Advertisement-
Play Games

# Unity UGUI的ScrollRect(滾動視圖)組件的介紹及使用 ## 1. 什麼是ScrollRect組件? ScrollRect(滾動視圖)是Unity UGUI中的一個常用組件,用於在UI界面中創建可滾動的區域。通過ScrollRect組件,可以實現在有限的空間內顯示大量的內容,並且 ...


Unity UGUI的ScrollRect(滾動視圖)組件的介紹及使用

1. 什麼是ScrollRect組件?

ScrollRect(滾動視圖)是Unity UGUI中的一個常用組件,用於在UI界面中創建可滾動的區域。通過ScrollRect組件,可以實現在有限的空間內顯示大量的內容,並且可以通過滑動手勢來瀏覽內容。

2. ScrollRect組件的工作原理

ScrollRect組件通過將內容放置在一個可滾動的矩形區域內,然後通過拖動或滑動手勢來改變內容的顯示位置。ScrollRect組件包含一個Viewport(視口)和一個Content(內容)兩個子對象,Viewport用於限制Content的顯示範圍,而Content則包含了實際的內容。

3. ScrollRect組件的常用屬性

  • Content:用於放置實際的內容的RectTransform對象。
  • Horizontal:是否允許水平方向的滾動。
  • Vertical:是否允許垂直方向的滾動。
  • Movement Type:滾動的類型,可選的類型有:Unrestricted(不受限制)、Elastic(彈性)、Clamped(限制)。
  • Inertia:是否啟用慣性滾動。
  • Deceleration Rate:慣性滾動的減速率。
  • Scroll Sensitivity:滾動的靈敏度。

4. ScrollRect組件的常用函數

  • ScrollTo:滾動到指定位置。
  • StopMovement:停止滾動。
  • OnBeginDrag:開始拖拽時調用的函數。
  • OnDrag:拖拽過程中調用的函數。
  • OnEndDrag:結束拖拽時調用的函數。

5. 示例代碼

示例1:基本的滾動視圖

using UnityEngine;
using UnityEngine.UI;

public class ScrollRectExample : MonoBehaviour
{
    public ScrollRect scrollRect;

    void Start()
    {
        // 設置Content的大小
        RectTransform content = scrollRect.content;
        content.sizeDelta = new Vector2(0, 1000);

        // 設置滾動視圖的滾動範圍
        scrollRect.verticalNormalizedPosition = 1;
    }
}

操作步驟:

  1. 創建一個空的GameObject,並添加ScrollRect組件。
  2. 在Hierarchy面板中選中ScrollRect對象,將Content對象拖拽到ScrollRect的Content屬性中。
  3. 將示例代碼添加到ScrollRectExample腳本中,並將ScrollRect對象拖拽到scrollRect屬性中。
  4. 運行游戲,可以看到滾動視圖中的內容可以通過滑動手勢進行滾動。

示例2:限制滾動範圍

using UnityEngine;
using UnityEngine.UI;

public class ScrollRectExample : MonoBehaviour
{
    public ScrollRect scrollRect;

    void Start()
    {
        // 設置Content的大小
        RectTransform content = scrollRect.content;
        content.sizeDelta = new Vector2(0, 1000);

        // 設置滾動視圖的滾動範圍
        scrollRect.verticalNormalizedPosition = 1;
        scrollRect.movementType = ScrollRect.MovementType.Clamped;
    }
}

操作步驟:

  1. 創建一個空的GameObject,並添加ScrollRect組件。
  2. 在Hierarchy面板中選中ScrollRect對象,將Content對象拖拽到ScrollRect的Content屬性中。
  3. 將示例代碼添加到ScrollRectExample腳本中,並將ScrollRect對象拖拽到scrollRect屬性中。
  4. 運行游戲,可以看到滾動視圖中的內容在滾動到邊界時會受到限制。

示例3:慣性滾動

using UnityEngine;
using UnityEngine.UI;

public class ScrollRectExample : MonoBehaviour
{
    public ScrollRect scrollRect;

    void Start()
    {
        // 設置Content的大小
        RectTransform content = scrollRect.content;
        content.sizeDelta = new Vector2(0, 1000);

        // 設置滾動視圖的滾動範圍
        scrollRect.verticalNormalizedPosition = 1;
        scrollRect.inertia = true;
        scrollRect.decelerationRate = 0.5f;
    }
}

操作步驟:

  1. 創建一個空的GameObject,並添加ScrollRect組件。
  2. 在Hierarchy面板中選中ScrollRect對象,將Content對象拖拽到ScrollRect的Content屬性中。
  3. 將示例代碼添加到ScrollRectExample腳本中,並將ScrollRect對象拖拽到scrollRect屬性中。
  4. 運行游戲,可以看到滾動視圖中的內容在滑動結束後會有慣性滾動的效果。

示例4:滾動到指定位置

using UnityEngine;
using UnityEngine.UI;

public class ScrollRectExample : MonoBehaviour
{
    public ScrollRect scrollRect;

    void Start()
    {
        // 設置Content的大小
        RectTransform content = scrollRect.content;
        content.sizeDelta = new Vector2(0, 1000);

        // 設置滾動視圖的滾動範圍
        scrollRect.verticalNormalizedPosition = 1;

        // 滾動到指定位置
        scrollRect.ScrollTo(new Vector2(0, 500), 0.5f);
    }
}

操作步驟:

  1. 創建一個空的GameObject,並添加ScrollRect組件。
  2. 在Hierarchy面板中選中ScrollRect對象,將Content對象拖拽到ScrollRect的Content屬性中。
  3. 將示例代碼添加到ScrollRectExample腳本中,並將ScrollRect對象拖拽到scrollRect屬性中。
  4. 運行游戲,可以看到滾動視圖會自動滾動到指定位置。

示例5:停止滾動

using UnityEngine;
using UnityEngine.UI;

public class ScrollRectExample : MonoBehaviour
{
    public ScrollRect scrollRect;

    void Start()
    {
        // 設置Content的大小
        RectTransform content = scrollRect.content;
        content.sizeDelta = new Vector2(0, 1000);

        // 設置滾動視圖的滾動範圍
        scrollRect.verticalNormalizedPosition = 1;

        // 停止滾動
        scrollRect.StopMovement();
    }
}

操作步驟:

  1. 創建一個空的GameObject,並添加ScrollRect組件。
  2. 在Hierarchy面板中選中ScrollRect對象,將Content對象拖拽到ScrollRect的Content屬性中。
  3. 將示例代碼添加到ScrollRectExample腳本中,並將ScrollRect對象拖拽到scrollRect屬性中。
  4. 運行游戲,可以看到滾動視圖會停止滾動。

6. 註意事項

  • ScrollRect組件需要配合其他UI組件(如Mask)一起使用,以限制內容的顯示範圍。
  • 在使用ScrollRect組件時,需要註意Content的大小和滾動範圍的設置,以確保內容能夠正確地顯示和滾動。

7. 參考資料

__EOF__

本文作者 Blank
本文鏈接
版權聲明:本博客所有文章除特別聲明外,均採用 BY-NC-SA 許可協議。轉載請註明出處!
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角 推薦 一下。您的鼓勵是博主的最大動力!

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在日常開發中,當需要給一個現有類添加附加職責,而又不能採用生成子類的方法進行擴充時。例如,該類被隱藏或者該類是終極類或者採用繼承方式會產生大量的子類。這時候,我們該怎麼辦呢?我們可以使用裝飾器器模式來解決這個問題,**本文將從以下四個方面講解裝飾器器模式**。 - 簡介 - 優缺點 - 應用場景 - ...
  • 掩碼是一串二進位代碼對目標欄位進行位與運算 # 掩碼 掩碼通常是一個用於屏蔽或隱藏某些位的值,以便在計算中只關註感興趣的位。掩碼通常是一個由二進位位組成的數,用於按位與操作,以清除或保留某些位的值。 常見的用途包括: 1. **位操作和位掩碼**:在電腦編程中,位掩碼用於執行位操作,如按位與(AN ...
  • > 關註TechLeadCloud,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資深架構師,項目管理專業人士,上億營收AI產品研發負責人。 ![file](https://img2023. ...
  • [TOC](多線程) # 介紹: C++ 是一種支持多線程編程的編程語言,它提供了豐富的多線程支持來充分利用現代多核處理器的性能。 C++ 多線程編程通常使用標準庫中的 頭文件以及其他相關的標準庫組件來實現。 # 理論: 1. 常用的類: std::thread 類,用於創建和管理線程等等 std: ...
  • 阻塞隊列是一種常用的併發編程工具,它能夠在多線程環境下提供一種安全而高效的數據傳輸機制。本文將介紹阻塞隊列的原理和使用場景,並通過實例演示其在多線程編程中的應用。 # 一、什麼是阻塞隊列 阻塞隊列是一種特殊的隊列,它具有以下幾個特點: 1. 阻塞特性:當隊列為空時,從隊列中獲取元素的操作將會被阻塞, ...
  • 大家好,我是棧長。 最近看到一個話題: > **前幾天去華為面試,後來說通過了,但是HR告訴我簽約簽的是華為慧通的,我該不該去?** > > 來源:https://www.zhihu.com/question/310409624/answer/2437587008 面對這一問題,網友們紛紛表示當然不 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本機情況 - 省吃儉用入手了ThinkPad T14, ...
  • 在 Spring 中,`@Autowired` 註解的使用在不同的上下文中會產生不同的效果,這取決於所在的組件或類是否由**Spring**管理。 1. **`@Aspect` 註解的使用**:`@Aspect` 註解通常用於聲明切麵,而切麵是 Spring 管理的組件。因此,`@Autowired ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...