转盘抽奖代码

using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public enum PrizeType//几种获奖状态
{
    SuperPrize,
    FirstPrize,
    SecondPrize,
    ThirdPrize,
    ThankYou
}

public class test : MonoBehaviour
{
    private float RotateSpeed;//旋转速度
    private  Vector3   PauseAngle;//获取转变的Vector3类型
    private  float AngleZ;//z轴

    private string Text;//提示文字
    public Text TextUI;//提示文字UI
    private bool enable = false;//控制UI出现的bool值
    
    public  PrizeType type;//奖品类型

    private void Start()
    {
        RotateSpeed = 0;
        TextUI.enabled = false;
    }
    private void Update()

    {
        UpdateAngle();//更新角度
        UpdatePrize();//更新奖品
        RotateSpeed -= Time.deltaTime * 100;
        TextUI.text = Text;
        transform.Rotate(Vector3.forward * Time.deltaTime * RotateSpeed);
       

        if (RotateSpeed <= 0)
        {
            RotateSpeed = 0;
            Time.timeScale = 0;
            PauseAngle = GetInspectorRotationValueMethod(transform);
            AngleZ = PauseAngle.z;
            if(enable)
            {
                TextUI.enabled = true;
            }
        }
        
       
    }
    public void StartButton()//开始按钮
    {
        RotateSpeed = Random.Range(1000, 2500);
        Time.timeScale = 1;
        enable = true;
    }

    private void UpdateAngle()//更新状态
    {
        float angle = AngleZ;//临时变量来处理角度的超出范围的问题
        if (angle > 360)
        {
            angle -= 360;
        }
        else if (angle < -331.2f)
        {
            angle += 360;
        }
        if(angle >= -31.7f && angle < 32.6f)
        {
            type = PrizeType.FirstPrize;
        }
        else if (angle >= -91.1f && angle < -31.7f)
        {
            type = PrizeType.SuperPrize;
        }
        else if (angle >= -149.5f && angle < -91.1f)
        {
            type = PrizeType.ThankYou;
        }
        else if (angle >= -210f && angle < -149.5f)
        {
            type = PrizeType.ThirdPrize;
        }
        else if (angle >= -269f && angle < -210f)
        {
            type = PrizeType.SecondPrize ;
        }
        else if (angle >= -331.2f && angle < -269f)
        {
            type = PrizeType.ThankYou;
        }
    }
    public Vector3 GetInspectorRotationValueMethod(Transform transform)//把四元数转换成为Vector3类型的参数
    {
        // 获取原生值
        System.Type transformType = transform.GetType();
        PropertyInfo m_propertyInfo_rotationOrder = transformType.GetProperty("rotationOrder", BindingFlags.Instance | BindingFlags.NonPublic);
        object m_OldRotationOrder = m_propertyInfo_rotationOrder.GetValue(transform, null);
        MethodInfo m_methodInfo_GetLocalEulerAngles = transformType.GetMethod("GetLocalEulerAngles", BindingFlags.Instance | BindingFlags.NonPublic);
        object value = m_methodInfo_GetLocalEulerAngles.Invoke(transform, new object[] { m_OldRotationOrder });
        string temp = value.ToString();
        //将字符串第一个和最后一个去掉
        temp = temp.Remove(0, 1);
        temp = temp.Remove(temp.Length - 1, 1);
        //用‘,’号分割
        string[] tempVector3;
        tempVector3 = temp.Split(',');
        //将分割好的数据传给Vector3
        Vector3 vector3 = new Vector3(float.Parse(tempVector3[0]),
            float.Parse(tempVector3[1]), float.Parse(tempVector3[2]));
        return vector3;
    }

    private void UpdatePrize()//更新奖品
    {
        switch(type)
        {
            case PrizeType.FirstPrize :
                Text = "恭喜你获得一等奖!";
                break;
            case PrizeType.SecondPrize :
                Text = "恭喜你获得二等奖!";
                break;
            case PrizeType.ThirdPrize:
                Text = "恭喜你获得三等奖!";
                break;
            case PrizeType.SuperPrize:
                Text = "恭喜你获得特等奖!";
                break;
            case PrizeType.ThankYou :
                Text = "感谢参与!";
                break;

        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值