哈嘍大家好,你的橙哥突然出現~
本系列博客地址:傳送門

一、效果展示
插件預覽:

二、翻頁插件介紹
匯入插件
首先匯入插件,我們以 Example_6 場景為例,講解插件的使用方法,

1??、如何設定書本的大小?
在未運行狀態下,調整 “BookPro” 的大小即可,
2??、預制件介紹
預制件中包括上面圖片的陰影效果物體、手勢互動感應熱區,
還有最重要的書本每一頁的頁面 page1-6,
在 BookPro 腳本,我們可以看到 Papers 屬性:

Papers 將我們所有的頁面都配置到了里面,
且Paper是成對存在的,代表每一頁書紙,有正有反面,
Front:代表書本打開后,我們看到的右側一面為Front
Back:我們看到的左側一面為Back
SetCurrent:設定當前組為顯示頁面(顯示前一組的Back,當前組的Front)
我們需要將我們制作的每一頁page添加到這屬性里面,以用于我們的翻頁,
可以使用 Back,或者 Front 預制體,進行書本頁面的制作,
三、兩種翻頁方式介紹
插件有兩種翻頁的方式:
- 通過互動,滑鼠滑動頁面進行翻頁
- 通過代碼,進行翻頁效果
1??、互動的翻頁方式
將 BookPro 預制體拖到Canvas下,
首先開啟互動的開關:BookPro 腳本,Interactable = true
RightHotSpot、LeftHotSpot物體,即為觸發互動的區域,
調整每塊的大小,即可改變互動的范圍

2??、代碼翻頁方式
給 BookPro 添加 AutoFlip 腳本,
接下來直接呼叫下面的方法即可,
向后翻頁的方法:
GetComponent<AutoFlip>().FlipLeftPage();
向前翻頁的方法:
GetComponent<AutoFlip>().FlipRightPage();
四、拓展翻頁方式
下面介紹如何使用代碼,實作實用的翻頁效果,
1??翻頁到指定頁面
給 BookPro 添加 AutoFlip 腳本,
接下來給你的腳本寫下面的方法,呼叫即可,
//pageNum:要到達的頁面數
public void GotoPage(int pageNum)
{
AutoFlip autoFlip = FindObjectOfType<AutoFlip>();
//避免輸入的頁面數超過,或小于實際頁面數
if (pageNum < 0) pageNum = 0;
if (pageNum > autoFlip.ControledBook.papers.Length * 2) pageNum = autoFlip.ControledBook.papers.Length * 2 - 1;
autoFlip.enabled = true;
autoFlip.PageFlipTime = 0.2f;
autoFlip.TimeBetweenPages = 0;
autoFlip.StartFlipping((pageNum + 1) / 2);
}

2??、跳轉到指定頁面
給 BookPro 添加 AutoFlip 腳本,
接下來給你的腳本寫下面的方法,呼叫即可,
//設定當前顯示Papers[1]內容
FindObjectOfType<BookPro>().CurrentPaper = 1;


3??、動態添加頁面
若我們不想在一開始配置好界面,而是通過代碼生成界面,
那可以用下面的方法,來進行實作,
使用方法:
- 可傳入你配置好的預制件,或者插件自帶的 Back、Front預制件,完成書頁的動態添加,
- 你會得到你添加的Paper,接下來你也可以在你的代碼中,對添加的書頁進行修改,
public class BookPage_DynamicallyAddPages : MonoBehaviour
{
/// <summary>
/// 動態在書本末尾添加書頁
/// </summary>
/// <param name="book">控制的BookPro</param>
/// <param name="frontPagePrefab">該頁的正面預制件</param>
/// <param name="backPagePrefab">該頁的反面預制件</param>
public static Paper AddPaper(BookPro book, GameObject frontPagePrefab, GameObject backPagePrefab)
{
Paper newPaper = new Paper
{
Front = Instantiate(frontPagePrefab, book.transform, false),
Back = Instantiate(backPagePrefab, book.transform, false)
};
var temp = book.papers.ToList();
temp.Add(newPaper);
book.papers = temp.ToArray();
//更新翻轉范圍以包含新添加的紙張
book.EndFlippingPaper = book.papers.Length - 1;
book.UpdatePages();
return newPaper;
}
}
五、翻頁組件講解
下面詳細講解每個組件屬性的用途,可在這進行含義查詢,
📢BookPro
Flipping Range:可以限制可以翻頁的范圍,例如第一頁是最后一頁不可翻頁
Current Paper:當前的頁數(第一頁下標為0,最后一頁下標為最后一頁的下標+1)
Update Pages Order:根據Current Paper數值重置頁面順序
Update Pages Names:將所有的UI頁面,按照頁碼排序重命名
Show:若要修改某個頁面,點擊Show之后在Scene面板中選中進行修改
OnFlip:翻頁時執行的回呼
📢Auto Flip:實作翻頁功能的腳本
腳本啟用后,會將BookPro的interactable設定為false
ControledBook:控制哪個 BookPro 進行翻頁
Mode:翻頁的方向,從左向右翻,還是從右向左翻
Page Flip Time:翻頁影片的時間
Delay Before Start:第一次翻頁的延遲時間
Time Between Pages:兩次翻頁的時間間隔
Auto Start Flip:是否開啟 自動翻頁,可以取消自動翻頁之后在需要的地方通過代碼呼叫StartFlipping方法

本篇翻頁插件教程就到此結束了,
學會了還可以看下橙哥的其他U3D專欄哦~
- 這個“插件專欄”(傳送門)正在不斷更新U3D插件!
- 點個收藏防走丟~
專欄會至少更新四十篇博客,從入門到高級的插件都將記錄在這,將是網上最全的U3D插件專欄,早訂閱早學習哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293467.html
標籤:其他
上一篇:docker入門
