unity實現(xiàn)翻頁效果
更新時間:2021年03月02日 16:08:41 作者:weixin_44462815
這篇文章主要為大家詳細介紹了unity實現(xiàn)翻頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了unity實現(xiàn)翻頁效果的具體代碼,供大家參考,具體內容如下
一、示意圖

二、步驟
創(chuàng)建物體ToPanel;添加組件ScrollRect,
在下面創(chuàng)建一個空物體用來裝需要移動的子物體,


創(chuàng)建一個Scrollbar;




三、代碼
下面展示一些 內聯(lián)代碼片。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
public class SliderControl : MonoBehaviour
{
public Scrollbar m_Scrollbar;
public ScrollRect m_ScrollRect;
[Header("子物體的父物體")]
public GameObject panel;
[Header("移動到多少百分比圖片切換")] //注釋
[Range(0.1f, 0.9f)] //范圍
public float banfenbi = 0.5f;
[Header("是否限制一次只能切換一張圖片")]
public bool limit = false;
private float mTargetValue;
private bool mNeedMove = false;
private const float SMOOTH_TIME = 0.2F;
private float mMoveSpeed = 0f;
private float child_Count;
private float num1;
private float var_Down;
private List<float> num_list1 =new List<float>();
private List<float> num_list2 = new List<float>();
private List<float> num_list3 = new List<float>();
private int weizhi; //頁數(shù)
void Start()
{
weizhi = 0;
child_Count = panel.transform.childCount;
num1 = 1 / (child_Count - 1);
print("-----子物體數(shù)量------ " + child_Count + " " + num1);
for (int i = 0; i < child_Count; i++)
{
float a = 0;
num_list1.Add(a + num1 * i);
float b = (a + num1 * i) + (num1 * banfenbi);
num_list2.Add(b);
float c = (a + num1 * i) + (num1 * (1-banfenbi));
num_list3.Add(c);
print("---child_Count----- " + num_list1[i] + " " + num_list2[i]);
}
}
public void OnPointer()
{ }
public void OnPointerDown()
{
//print("---OnPointerDown----");
var_Down = m_Scrollbar.value;
mNeedMove = false;
}
public void OnPointerUp()
{
//print("---OnPointerUp----");
//print("-----m_Scrollbar.value---- " + m_Scrollbar.value);
for (int i = 0; i < child_Count; i++)
{
float num;
if (var_Down- m_Scrollbar.value<0)
{
num = num_list2[i];
}
else
{
num = num_list3[i];
}
if (m_Scrollbar.value <= num)
{
if (limit)
{
if (i> weizhi)
{
weizhi = weizhi + 1;
}
else if (i == weizhi)
{
weizhi = i;
}
else
{
weizhi = weizhi - 1;
}
mTargetValue = num_list1[weizhi];
}
else
{
mTargetValue = num_list1[i];
weizhi = i; //頁數(shù)
}
break;
}
}
mNeedMove = true;
mMoveSpeed = 0;
}
/// <summary>
/// 直接跳轉到指定頁數(shù)
/// </summary>
/// <param name="頁數(shù)"></param>
public void OnButtonClick(int value)
{
mTargetValue = num_list1[value];
if (mTargetValue<0)
{
mTargetValue = 0;
}
if (mTargetValue>1)
{
mTargetValue = 1;
}
weizhi = value;
mNeedMove = true;
}
void Update()
{
if (mNeedMove)
{
if (Mathf.Abs(m_Scrollbar.value - mTargetValue) < 0.01f)
{
m_Scrollbar.value = mTargetValue;
mNeedMove = false;
MoveEnd();
return;
}
m_Scrollbar.value = Mathf.SmoothDamp(m_Scrollbar.value, mTargetValue, ref mMoveSpeed, SMOOTH_TIME);
}
}
/// <summary>
/// 移動完畢的回調
/// </summary>
public void MoveEnd()
{
print("----- 移動完畢-----第幾頁--- "+ (weizhi+1));
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C#?使用SpecFlow創(chuàng)建BDD測試用例的示例代碼
這篇文章主要介紹了C#?使用SpecFlow創(chuàng)建BDD測試用例,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06

