用C#实现竖列转盘游戏

 本来以为优快云可以传本地视频= =结果也不行,只能转gif了,今天从博客园搬家

 之前用lua撸了一个转盘,为了方便以后用 ,今天撸一个C#版的转盘,主体思路一致,便于展示用U3D拼了一版简易UI

灵魂UI来了!
在这里插入图片描述
代码来了!

using UnityEngine;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour
{
    private int col = 5;
    private int row = 5;
    public Transform[] Col0;
    public Transform[] Col1;
    public Transform[] Col2;
    public Transform[] Col3;
    public Transform[] Col4;
    public Transform[] ColPos;
    public int Speed;
    private int[] colState = new int[5]{2,2,2,2,2}; //1旋转 2停止 3即将停止
    private int[] colDelay = new int[5];
    private int startPos = 33;
    private int endPos = -30;
    private Transform[][] Items;
    public Button Btn_Start;
    public Button Btn_Stop;
    private Object[] list_Sprites;

    // Start is called before the first frame update
    void Start()
    {
        Items = new Transform[][]{Col0,Col1,Col2,Col3,Col4};
        Btn_Start.onClick.AddListener(()=>{
            StartSpin();
            Btn_Start.gameObject.SetActive(false);
            Btn_Stop.gameObject.SetActive(true);
            Btn_Stop.interactable = true;
        });

        Btn_Stop.onClick.AddListener(()=>{
            StopSpin();
        });

        list_Sprites = Resources.LoadAll<Sprite>("Sprites");
        for (int i =0; i<col;i++){
            for (int j=0; j<row;j++){
                Items[i][j].GetComponent<Image>().sprite = (Sprite)list_Sprites[(int)Random.Range(0,list_Sprites.Length-1)];
            }
        }
    }

    // Update is called once per frame
    void Update()
    {
        for (int i = 0; i< col; i++){
            if (colState[i] == 1){
                ColPos[i].localPosition = new Vector3(ColPos[i].localPosition.x,ColPos[i].localPosition.y - Speed,ColPos[i].localPosition.z);
                if (ColPos[i].localPosition.y <= endPos){
                    ColPos[i].localPosition = new Vector3(ColPos[i].localPosition.x,startPos,ColPos[i].localPosition.z);
                } 
                for (int j = row -1;j>=1;j--){
                    Items[i][j].GetComponent<Image>().sprite = Items[i][j-1].GetComponent<Image>().sprite;
                }
                Items[i][0].GetComponent<Image>().sprite = (Sprite)list_Sprites[(int)Random.Range(0,list_Sprites.Length-1)];
                if (colDelay[i] >= 0)
                {
                    colDelay[i]--;
                    if (colDelay[i] <= 0)
                    {
                        colState[i] = 3;
                    }
                }
            }
            else if (colState[i] == 3){
                ColPos[i].localPosition = new Vector3(ColPos[i].localPosition.x,ColPos[i].localPosition.y - Speed,ColPos[i].localPosition.z);
                ColPos[i].localPosition = new Vector3(ColPos[i].localPosition.x,startPos,ColPos[i].localPosition.z);
                for (int j = row -1;j>=1;j--){
                    Items[i][j].GetComponent<Image>().sprite = Items[i][j-1].GetComponent<Image>().sprite;
                }
                Items[i][0].GetComponent<Image>().sprite = (Sprite)list_Sprites[(int)Random.Range(0,list_Sprites.Length-1)];
                colState[i] = 2;
                if (i == 4){
                    Btn_Start.gameObject.SetActive(true);
                    Btn_Stop.gameObject.SetActive(false);
                }
            }
        }
    }

    void StartSpin()
    {
        for (int i =0; i<col ;i++)
        {
            colState[i] = 1;
            colDelay[i] = 60 + i * 20;
        }        
    }

    void StopSpin()
    {
        for (int i = 0; i < col; i++)
        {
            colDelay[i] = i * 20;
        }
        Btn_Stop.interactable = false;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值