Unity3d实现翻书效果
Unity3d实现翻书效果
此教程需要用到Book-Page Curl Pro插件,unity商店里有,需要插件和工程的话留邮箱
1、将插件中的bookPro复制成自己的prefab,将page0和page1提出来做prefab ,多余的page删掉,
并将RightPageShadow移出来并隐藏(这一步很重要);
适当把本来的0页与1页隐藏
2、写一个LoadBook的脚本挂上
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
using UnityEditor;public class LoadPage : MonoBehaviour
{public GameObject pagePrefab0;public GameObject pagePrefab1;public GameObject MyBook;public Sprite WhitePage;//如果页数是奇数的话加一张空白页private BookPro bookPro;private List<GameObject> pagePrefabsList;//public GameObject image;// 储存获取到的图片List<Texture2D> textures = new List<Texture2D>();List<Sprite> sprites = new List<Sprite>();// Use this for initializationvoid Start(){bookPro = MyBook.GetComponent<BookPro>();load();CreatePagePrefabs();bookPro.UpdatePages ();}void load(){List<string> filePaths = new List<string>();//string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";//string[] ImageType = imgtype.Split('|');//for (int i = 0; i < ImageType.Length; i++)//{// //获取d盘中a文件夹下所有的图片路径// string[] dirs = Directory.GetFiles(@"C:\Users\Administrator\Desktop\Pics", ImageType[i]);// for (int j = 0; j < dirs.Length; j++)// {// filePaths.Add(dirs[j]);// }//}//获取d盘中a文件夹下所有的图片路径string[] dirs = Directory.GetFiles(@"C:\Users\Administrator\Desktop\Pics", "*.JPG");for (int j = 0; j < dirs.Length; j++){filePaths.Add(dirs[j]);}for (int i = 0; i < filePaths.Count; i++){Texture2D tx = new Texture2D(100, 100);tx.LoadImage(getImageByte(filePaths[i]));textures.Add(tx);sprites.Add(Sprite.Create(tx, new Rect(0, 0, tx.width, tx.height), Vector2.one / 3));}if (sprites .Count %2!=0){sprites.Add(WhitePage);//如果页数是奇数的话加一张空白页}}/// <summary>/// 根据图片路径返回图片的字节流byte[]/// </summary>/// <param name="imagePath">图片路径</param>/// <returns>返回的字节流</returns>private static byte[] getImageByte(string imagePath){FileStream files = new FileStream(imagePath, FileMode.Open);byte[] imgByte = new byte[files.Length];files.Read(imgByte, 0, imgByte.Length);files.Close();return imgByte;}private void CreatePagePrefabs(){int pageCount = textures.Count;pagePrefabsList = new List<GameObject>();for (int i = 0; i < pageCount; i++){if (i % 2 == 0){//pagePrefab0就是page0的预制体GameObject gab = Instantiate(pagePrefab0) as GameObject;gab.transform.SetParent(bookPro.transform);gab.GetComponent<RectTransform>().sizeDelta = bookPro.RightPageTransform.GetComponent<RectTransform>().sizeDelta;gab.GetComponent<RectTransform>().pivot = bookPro.RightPageTransform.GetComponent<RectTransform>().pivot;gab.GetComponent<RectTransform>().anchoredPosition = bookPro.RightPageTransform.GetComponent<RectTransform>().anchoredPosition;gab.GetComponent<RectTransform>().localScale = bookPro.RightPageTransform.GetComponent<RectTransform>().localScale;gab.GetComponent<Image>().sprite = sprites[i];gab.name = "Page" + i.ToString();pagePrefabsList.Add(gab);}else{GameObject gab = Instantiate(pagePrefab1) as GameObject;gab.transform.SetParent(bookPro.transform);gab.GetComponent<RectTransform>().sizeDelta = bookPro.LeftPageTransform.GetComponent<RectTransform>().sizeDelta;gab.GetComponent<RectTransform>().pivot = bookPro.LeftPageTransform.GetComponent<RectTransform>().pivot;gab.GetComponent<RectTransform>().anchoredPosition = bookPro.LeftPageTransform.GetComponent<RectTransform>().anchoredPosition;gab.GetComponent<RectTransform>().localScale = bookPro.LeftPageTransform.GetComponent<RectTransform>().localScale;gab.GetComponent<Image>().sprite = sprites[i];gab.name = "Page" + i.ToString();pagePrefabsList.Add(gab);}}AddPages(pageCount);}private void AddPages(int pageCount){Debug.Log(pageCount);int parityNum;if (pageCount % 2 == 0)parityNum = pageCount / 2;elseparityNum = pageCount / 2 + 1;Debug.Log(parityNum);bookPro.papers = new Paper[parityNum];for (int i = 0; i < bookPro.papers.Length; i++){var paper = new Paper();if (pagePrefabsList.Count > i + 1){paper.Front = pagePrefabsList[i + i];if (pagePrefabsList.Count > i + i + 1){paper.Back = pagePrefabsList[i + i + 1];}}bookPro.papers[i] = paper;}bookPro.StartFlippingPaper = 0;bookPro.EndFlippingPaper = parityNum - 1;}}
tip:将page预制体上的image替换成Rawimage,并通过更换texture的方式读取更快捷,换完运行起来之后找到报错的代码位置将image替换成Rawimage就行。
Unity3d实现翻书效果相关推荐
- Unity3D UGUI实现翻书效果
提示:素材来源网络,侵权必删 UI翻书效果 效果图 一.准备工作 1.新建Unity工程 2.新建Hierarchy面板 二.使用步骤 1.新建UIBook脚本,挂在UIBook上 2.新建BookM ...
- winform实现翻书效果_如何用PPT实现翻书效果?
在PPT中,我们需要配合内容使用不同的动画效果,加深观众对内容的理解.当内容是讲述故事.过场片段,或是老师的课件讲解教材时,有一个实用好看的动画效果,就是"翻书效果"动画. 例如上 ...
- 自定义控件android特效,Android自定义控件eBook实现翻书效果实例详解
本文实例讲述了Android自定义控件eBook实现翻书效果的方法.分享给大家供大家参考,具体如下: 效果图: Book.java文件: package com.book; import androi ...
- html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
本教程给大家带来一个非常有创意的翻书效果,使用的是css 3D transforms属性和css transitions属性.这里将给你展示两种不同的图书设计:精装书和平装书.这两种设计只需要简单的改 ...
- settimeout怎么用_怎么实现一个3d翻书效果
本篇主要讨论以下两种翻书动画的实现: 第一种是整页翻转的效果: 这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性实现. 第二种折线翻转的效果,如下图所示: 主要是通过计算页面 ...
- 前端学习(284):纯css实现翻书效果
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- css3书页翻转,CSS3实现3D翻书效果
先上效果图:(样式有点丑,可以忽略一下下,效果出来了就好,后期加到其他项目中方便更改0.0) 类似翻书效果,原本的意思是使用JS来控制的,点击一次之后使用setInterval去控制书页翻过去的动画, ...
- 3d饼图 vue_怎么实现一个3d翻书效果
本篇主要讨论以下两种翻书动画的实现: 第一种是整页翻转的效果: 这种整页翻转的效果主要是做rotateY的动画,并结合一些CSS的3d属性实现. 第二种折线翻转的效果,如下图所示: 主要是通过计算页面 ...
- cocos2dx实现翻书效果。
因为项目需求,需要使用cocos实现3d翻书的效果,刚开始确实没有什么思路,cocos2d做3d的效果这不是开玩笑吗.但是,再难也得做啊,没办法. 开始查资料,在百度,google上搜索了好几天,基本 ...
最新文章
- (转)一个as3写的减速效果
- python无需修改是什么特性_用户编写的python程序无需修改就可以在不同的平台运行,是python的什么特征...
- Scikit-learn数据预处理分类变量编码之多标签二值化
- 数据分析入门极简书单
- 回溯算法团灭子集、排列、组合问题
- Exchange2003管理
- Linux 系统关于应该把程序安装在目录 /usr 还是目录 /usr/local 下的思考
- Redis Scan 命令
- android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换
- Hibernate映射关系之多对多
- oracle 性能诊断工具,oracle性能诊断工具
- 剑指offer——面试题44:扑克牌顺子
- Vue之设置背景图片
- Java Error(四)
- 战神引擎1.8斗破斩天泯灭完整开区端+高清地图+动态内观+珍宝+20转+四大陆
- github注册以及安装教程
- SeaweedFS使用小结
- 微信公众平台 使用JS-SDK实现拍照上传功能
- SQLSERVER读懂语句运行的统计信息
- 极客时间java高级(第二次课程)
热门文章
- Python——深入理解urllib、urllib2及requests(requests不建议使用?)
- 如何打造园本特色_如何建设本园特色课程
- 5G网优培训知识点:掉话及未接通原因分类
- Apache Atlas精讲:由浅入深,从概念,原理,使用,到自定义数据模型,生成血缘关系,带你玩转Atlas
- Arduino直接控制遥控汽车
- 中国鱼探测仪市场深度研究分析报告
- hadoop程序问题:java.lang.IllegalArgumentException: Wrong FS: hdfs:/ expected file:///
- WinDebug相关
- 链表4:合并有序链表的3道题
- ​人工智能驱动的道路安全网络白皮书(英) (附下载)