翻页代码

news/2024/12/19 15:32:43/文章来源:https://www.cnblogs.com/yheyi/p/18615388

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{

//成员变量

//SerializeField凡是显示在Inspector(检查器) 中的属性都同时具有Serialize功能(序列化的意思是说再次读取Unity时序列化的变量是

有值的,不需要你再次去赋值,因为它已经被保存下来)。

1. public 变量

在没有加入任何Attribute的前提下,public变量是默认被视为可以被Serialize的。所以public声明的变量在Inspector

面板中是可见的。而Private变量在Inspector视图面板是不可见的。

2. [SerializeField] Attribute
强制unity去序列化一个私有域。这是一个内部的unity序列化功能,有时候我们需要Serialize一个private或者protected的属性,

这个时候可以使用[SerializeField]这个Attribute:之后就可以在面板看到该变量。

[SerializeField] float pageSpeed = 0.5f;   //速度变量

[SerializeField] List<Transform> pages; //页面列表

int index = -1; //记录当前页面
bool rotate = false;
[SerializeField] GameObject backButton;
[SerializeField] GameObject forwardButton;

 

private void Start()
{
InitialState();

}

public void InitialState()  //初始状态
{
for (int i = 0; i < pages.Count; i++)  //页面列表中的页面个数
{
pages[i].transform.rotation = Quaternion.identity;//无旋转Quaternion.identity就是指Quaternion(0,0,0,0),就是每旋转前的初始角度,是一个确切的值,而transform.rotation是指本物体的角度,值是不确定的,比如可以这么设置transform.rotation = Quaternion.identity;一个是值类型,一个是属性变量

}
pages[0].SetAsLastSibling();//保持第一页在最上层想要将某个UI层保持在最上层,有两种方法:1 直接在Hierarchy面板中手动调整UI元素的顺序。2 用调用SetAsLastSibling 函数用代码实现。

backButton.SetActive(false);  //初始不能按right键
}

 

public void RotateForward()  //left按钮
{
if (rotate == true) { return; }
index++;
float angle = 180;
ForwardButtonActions();
pages[index].SetAsLastSibling();
StartCoroutine(Rotate(angle ,true));  //启动协同程序
}
public void ForwardButtonActions()
{
if (backButton.activeInHierarchy == false)  //判断right按钮是否激活 (前翻即可开启activeSelf==物体自身;activeInHierarchy==物体自身及其所有祖先物体==物体在场景中实际上是否激活

{
backButton.SetActive(true);
}
if (index == pages.Count - 1)//到达最后一页
{
forwardButton.SetActive(false);
}
}


public void RotateBack()
{
if(rotate == true ) {return ; }
float angle = 0;
pages[index].SetAsLastSibling();
BackButtonActive();
StartCoroutine(Rotate(angle ,false));

}
public void BackButtonActive()
{
if (forwardButton.activeInHierarchy == false)
{
forwardButton.SetActive(true);
}
if (index - 1 == -1) //到达首页
{
backButton.SetActive(false);
}
}

IEnumerator Rotate(float angle,bool forward)  //定义协程
{
float value = 0f;
while (true)
{
rotate = true;
Quaternion targetRotation = Quaternion.Euler(0, angle, 0);//欧拉角转换为四元数  转动目标度数

transform.rotation界面显示是欧拉角,实际打印是四元数

value += Time.deltaTime * pageSpeed;
pages[index].rotation = Quaternion.Slerp(pages[index].rotation, targetRotation, value);//翻页

Quaternion.Slerp(Quaternion from ,Quaternion to, float t)叫球面线形插值

@param from 为起始方向

@param to 为终止方向

@ param t = 0.1 可以理解为速度,通常取值为0< t <= 1

float angle1 = Quaternion.Angle(pages[index].rotation, targetRotation);
if(angle1 < 0.1f)
{
if(forward == false)
{
index--;
}
rotate = false ;
break;
}
yield return null;
}
}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/855419.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5款Win电脑好用的备忘录app推荐盘点

对于大多数的打工人来说,在使用Win电脑办公时,是需要随手记录一些琐事的,特别是工作上的事情,如果不随手记下来,很有可能会忘记。今天给大家介绍5款亲测好用的备忘录app,可以在电脑上使用,也可以实时同步到手机端,非常方便。 1、钉钉便签 作为一款办公软件,它不仅可以…

珠海盈致:智能制造赋能企业,解锁全新价值维度

智能制造是信息技术与制造技术的深度融合,经历了从数字化制造到“互联网+制造”,再到新一代智能制造的三个阶段。它是一个大系统,贯穿于产品、制造、服务的全生命周期,由智能产品、智能生产、智能服务三大功能系统,以及工业智联网和智能制造云两大支撑系统组成。 智能制造…

【路由交换】华为ENSP配置网口桥接

ENSP桥接物理网口,需要创建Cloud云对象,并在云对象中完成接口绑定配置绑定物理网口绑定UDP端口配置端口映射模拟器和cloud对象连接网络连接测试

基于QT+MQTT的实时视频监控

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级通信协议,广泛应用于物联网领域。它允许设备通过极少的代码和有限的带宽实现实时可靠的消息服务。MQTT协议的核心在于其三部分组成的控制报文:固定报头、可变报头和有效载荷。mqtt中的一些名词解…

在 K8S 中创建 Pod 是如何使用到 GPU 的:nvidia device plugin 源码分析

本文主要分析了在 K8s 中创建一个 Pod 并申请 GPU 资源,最终该 Pod 时怎么能够使用 GPU 的,具体的实现原理,以及 device plugin、nvidia-container-toolkit 相关源码分析。1.概述 在 两篇文章中分别分享了在不同环境如何使用 GPU,以及在 k8s 中使用 GPU Operator 来加速部…

unity 协程

协程 异步执行 必须带关键字 yield return 0 ;程序暂时挂起

修改网站统计图标的位置,网站统计图标位置调整指南

修改网站统计图标的位置通常涉及编辑网站的HTML和CSS文件。以下是详细的步骤:确定修改需求:明确需要将统计图标移动到的具体位置。备份网站文件:在进行任何修改之前,建议先备份网站的所有文件。连接到FTP服务器:使用FTP客户端(如FileZilla、WinSCP等)连接到你的服务器。…

C语言浮点数相等判定

等价关系 按照离散数学的等价关系叙述,集合 \(X\) 上的关系 \(R \subset (X, X)\) 如果满足反身性: \((x, x) \in R, \forall x \in X\),自己等于自己 对称性: 如果 \((x, y) \in R\),则 \((y, x) \in R\),我等于你,则你也等于我 传递性: 如果 \((x, y) \in R\) 且 \((y, …

怎么修改网站admin密码,如何安全地修改网站后台管理系统的admin密码,提升安全性,防止未授权访问

修改网站后台管理系统的admin密码是确保网站安全的重要措施。以下是详细的修改步骤:登录后台管理系统:使用当前的admin账户登录网站后台管理系统。 确保使用的是最新的浏览器,以获得最佳的用户体验。进入用户管理页面:在后台管理系统中,找到“用户管理”或“管理员管理”选…

PbootCMS 织梦支付宝接口常见错误

错误代码 ILLEGAL_PARTNER:更新 PARTNER 值和安全校检码。 确认 PARTNER 值和安全校检码对应且有效。 确认 PARTNER 开通了所需的服务。错误代码 HAS_NO_PRIVILEGE:登录签约的支付宝账号,查询接口服务类型和合同生效时间。 确认服务名称、合同生效时间、合作者身份ID和校验码…

帝国CMS调用标题分类灵动标签

[e:loop={1,5,0,0}] 【<a href="<?=sys_ReturnBqInfoTypeUrl($bqr[ttid])?>"><?=class_tr[$bqr[ttid]][tname]?></a>】 <a href="<?=$bqsr[titleurl]?>" target="_blank"><?=$bqr[title]?>&l…

旅游开发团队协作,什么办公软件能增进默契?

冬季旅游市场具有独特的魅力与挑战,对于旅游公司而言,选择合适的团队协作办公软件至关重要。这些软件不仅要满足日常业务需求,更要契合冬季旅游的特殊情境,如应对旅游高峰期的高效协作、保障寒冷天气下旅游行程的顺利进行等。对于 MBTI 中的 J 人来说,有序、高效且可视化的…