unity3d-学习笔记10-卡牌游戏制作(实现点击卡片消失,并将后面的卡片填充的功能)

unity3d-学习笔记10-卡牌游戏制作(实现点击卡片消失,并将后面的卡片填充的功能)

实现点击卡片消失,并将后面的卡片填充的功能

这里需要一点小逻辑,我没有看大佬们的,完全是自己手敲(膨胀了),花了一个下午的时间,只能勉强完成这个功能,还有很多写的时候就知道不严谨,还可以优化的地方有很多,时间关系还是先写上去了
上代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using DG.Tweening;
public class Desktop : MonoBehaviour
{
    // Start is called before the first frame update
    public CanvasGroup all;
    public Transform MianTrasfrom;
    private float way;
    private GameObject go;
    public static List<string> des = new List<string>();
    private int index;
    void Start()
    {
        all.DOFade(0, 0);
        way = 1f;
        StartCoroutine(ShowScene());
        foreach (string text in StaticRes.texts)
        {
            des.Add(text);
        }
        
    }

    // Update is called once per frame
    void Update()
    {
        UpdateData();
    }
    IEnumerator ShowScene()
    {
        yield return new WaitForSeconds(1f);
        all.DOFade(1, 1);
        yield return new WaitForSeconds(1f);
        for (int i = 0; i <= 2; i++)
        {
            go = (GameObject)Instantiate(Resources.Load("Events/Events"), MianTrasfrom.position, MianTrasfrom.rotation);
            go.transform.parent = MianTrasfrom;//设置实例化对象的父级
            go.transform.localScale = Vector3.one;//设置缩放比例1,1,1
            way += 4.5f;
            go.transform.Translate(new Vector3(MianTrasfrom.position.x + way, 0, 0));
            Image[] image = go.GetComponentsInChildren<Image>();
            int pic = i + 1;
            image[1].sprite = Resources.Load("Events/" + pic, typeof(Sprite)) as Sprite;
            Text text = go.GetComponentInChildren<Text>();
            text.DOText(des[i], 1);
        }
        way = 1f;
    }
    void UpdateData()
    {
        if (Clip.isUpdate && des.Count>=3)
        {
            for (int i = 0;i<GameObject.Find("EventsController").transform.childCount;i++)
            {
                Destroy(GameObject.Find("EventsController").transform.GetChild(i).gameObject);
            }
            for (int i = 0; i <= 2; i++)
            {
                GameObject go = (GameObject)Instantiate(Resources.Load("Events/Events"), MianTrasfrom.position, MianTrasfrom.rotation);
                go.transform.parent = MianTrasfrom;//设置实例化对象的父级
                go.transform.localScale = Vector3.one;//设置缩放比例1,1,1
                way += 4.5f;
                go.transform.Translate(new Vector3(MianTrasfrom.position.x + way, 0, 0));
                Image[] image = go.GetComponentsInChildren<Image>();
                
                image[1].sprite = Resources.Load("Events/" +Clip.pics[i], typeof(Sprite)) as Sprite;
                Text text = go.GetComponentInChildren<Text>();
                text.DOText(des[i], 1);
                index++;
            }
            Clip.isUpdate = false;
            way = 1f;
        }
        if (Clip.isUpdate && des.Count == 2)
        {
            for (int i = 0; i < GameObject.Find("EventsController").transform.childCount; i++)
            {
                Destroy(GameObject.Find("EventsController").transform.GetChild(i).gameObject);
            }
            for (int i = 0; i <= 1; i++)
            {
                GameObject go = (GameObject)Instantiate(Resources.Load("Events/Events"), MianTrasfrom.position, MianTrasfrom.rotation);
                go.transform.parent = MianTrasfrom;//设置实例化对象的父级
                go.transform.localScale = Vector3.one;//设置缩放比例1,1,1
                way += 7f;
                go.transform.Translate(new Vector3(MianTrasfrom.position.x + way, 0, 0));
                Image[] image = go.GetComponentsInChildren<Image>();

                image[1].sprite = Resources.Load("Events/" + Clip.pics[i], typeof(Sprite)) as Sprite;
                Text text = go.GetComponentInChildren<Text>();
                text.DOText(des[i], 1);
                index++;
            }
            Clip.isUpdate = false;
            way = 1f;
        }
        if (Clip.isUpdate && des.Count == 1)
        {
            for (int i = 0; i < GameObject.Find("EventsController").transform.childCount; i++)
            {
                Destroy(GameObject.Find("EventsController").transform.GetChild(i).gameObject);
            }
                GameObject go = (GameObject)Instantiate(Resources.Load("Events/Events"), MianTrasfrom.position, MianTrasfrom.rotation);
                go.transform.parent = MianTrasfrom;//设置实例化对象的父级
                go.transform.localScale = Vector3.one;//设置缩放比例1,1,1
                way += 10f;
                go.transform.Translate(new Vector3(MianTrasfrom.position.x + way, 0, 0));
                Image[] image = go.GetComponentsInChildren<Image>();

                image[1].sprite = Resources.Load("Events/" + Clip.pics[0], typeof(Sprite)) as Sprite;
                Text text = go.GetComponentInChildren<Text>();
                text.DOText(des[0], 1);
                index++;
            Clip.isUpdate = false;
            way = 1f;
        }
    }
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using DG.Tweening;
public class Clip : MonoBehaviour
{
    // Start is called before the first frame update
    private CanvasGroup one;
    private int index;
    public static bool isUpdate;
    public static List<int> pics = new List<int>();
    private string text;
    void Start()
    {
        isUpdate = false;
        pics.Add(1);
        pics.Add(2);
        pics.Add(3);
        pics.Add(4);
        pics.Add(5);
        pics.Add(6);
        pics.Add(7);
        pics.Add(8);
        pics.Add(9);
        pics.Add(10);
        pics.Add(11);
        pics.Add(12);
        pics.Add(13);
        pics.Add(14);
        pics.Add(15);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    public void  SelectAndRemove()
    {
        one = GetComponent<CanvasGroup>();
        text = one.GetComponentInChildren<Text>().text;
        index = Desktop.des.IndexOf(text);
        StartCoroutine(Disappear());
    }
    IEnumerator Disappear()
    {
        one.DOFade(0, 1);
        yield return new WaitForSeconds(1f);
        Desktop.des.RemoveAt(index);
        Clip.pics.RemoveAt(index);
        isUpdate = true;
        if (text == "“你们上当了呢”")
        {
            SceneManager.LoadScene("FightScene");
        }
    }
}

实现更换unity启动的图标

在这里插入图片描述
在这里插入图片描述
这里一通乱点就可以了
匆匆结尾,还有打牌的逻辑没实现,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值