Book - Page Curl Pro教程❄️一款制作Unity翻页的插件

Posted 橙子SKODE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Book - Page Curl Pro教程❄️一款制作Unity翻页的插件相关的知识,希望对你有一定的参考价值。

哈喽大家好,你的橙哥突然出现~

本系列博客地址:传送门




一、效果展示

插件预览:



二、翻页插件介绍

导入插件
首先导入插件,我们以 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插件专栏,早订阅早学习哦!

以上是关于Book - Page Curl Pro教程❄️一款制作Unity翻页的插件的主要内容,如果未能解决你的问题,请参考以下文章

Mac系统安装Lua

我的macbook pro 2015版,安装哪一代的Windows更流畅,更好用,兼容性更高

尝试使用 Curl 登录网站

惠普星Book Pro14电脑用U盘怎么安装系统教学

青训营Pro️从0到1实现一个自己的前端约定路由项目脚手架️ 工具~

青训营Pro️从0到1实现一个自己的前端约定路由项目脚手架️ 工具~