自学内容网 自学内容网

Unity 实现数字垂直滚动效果

前言

遇到一个需要数字垂直滚动模拟老虎机的效果,记录一下。
数字垂直滚动

项目

场景布置

3个Image换上带有RollNumberShader的材质
RollNumberScript脚本中引用即可
场景布置

Shader代码编写

shader连线

材质球设置

材质球设置

代码编写

RollNumberScript.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;

public class RollNumberScript : MonoBehaviour
{
    //个位数
    public GameObject singleDigitNumber;
    //十位数
    public GameObject tenDigitNumber;
    //百位数
    public GameObject hundredDigitNumber;


    private Material singleDigitMaterial;
    private Material tenDigitMaterial;
    private Material hundredDigitMaterial;

    void Start()
    {
        singleDigitMaterial = singleDigitNumber.GetComponent<Image>().material;
        tenDigitMaterial = tenDigitNumber.GetComponent<Image>().material;
        hundredDigitMaterial = hundredDigitNumber.GetComponent<Image>().material;
    }

    void Update()
    {
        if (Input.GetKey(KeyCode.Q))
        {

            int num = Random.Range(100, 1000);
            SetNumber(num);
        }
    }

    private void SetNumber(int number)
    {
        int hundredDigit = number / 100;
        int tenDigit = (number - hundredDigit * 100) / 10;
        int singleDigit = number - hundredDigit * 100 - tenDigit * 10;


        //这里加一个动画效果,让数字滚动
        //动画时间
        float duration = 0.3f;
        //动画曲线
        Ease tweenEase = Ease.OutQuart;

        //百位数
        hundredDigitMaterial.DOFloat(hundredDigit, "_NumberValue", duration).SetEase(tweenEase);
        //十位数
        tenDigitMaterial.DOFloat(tenDigit, "_NumberValue", duration).SetEase(tweenEase);
        //个位数
        singleDigitMaterial.DOFloat(singleDigit, "_NumberValue", duration).SetEase(tweenEase);
    }
}

数字图片

横着竖着都可以,9宫格也可以
数字图片


原文地址:https://blog.csdn.net/a71468293a/article/details/143648748

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!