Unity类银河恶魔城学习记录12-7-1 p129 Craft UI - part 1源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考

此代码仅为较上一P有所改变的代码

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

UI_CraftList.cs
cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class UI_CraftList : MonoBehaviour,IPointerDownHandler
{
    
    [SerializeField] private GameObject craftSlotPrefab;//创建craftSlot的预制体
    [SerializeField] private List<ItemData_Equipment> craftEquipment;//一个将要导进craftList的data类型组
    [SerializeField] private Transform craftSlotParent;//便于寻找将要删除的craftSlot的父组件
    [SerializeField] private List<UI_CraftSlot> craftSlots;//暂时保存将要删除的craftSlot

    private void Start()
    {
        AssignCraftSlots();
    }

    private void AssignCraftSlots()//获得当前所有的craftSlot函数//主要用来为清空做准备
    {
        for (int i = 0; i < craftEquipment.Count; i++)
        {
            craftSlots.Add(craftSlotParent.GetChild(i).GetComponent<UI_CraftSlot>());
        }
    }

    public void SetupCraftList()//将所有保存在其中的装备类型实例化craftslot并存入CraftList的函数
    {
        AssignCraftSlots();

        for (int i = 0; i < craftSlots.Count;i++)//删除所有原来存在于其list里的slot
        {
            Destroy(craftSlots[i].gameObject);
            Debug.Log(1);
        }

        craftSlots = new List<UI_CraftSlot>();//清空此槽,方便下一次装其他的装备

        for(int i = 0;i < craftEquipment.Count;i++)
        {
            GameObject newSlot = Instantiate(craftSlotPrefab, craftSlotParent);//创建的实例往craftPartent里塞
            newSlot.GetComponent<UI_CraftSlot>().SetUpCraftSlot(craftEquipment[i]);
        }
        
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        SetupCraftList();
    }
}
UI_CraftSlot.cs
cs 复制代码
using UnityEngine.EventSystems;

public class UI_CraftSlot : UI_itemSlot
{
    protected override void Start()
    {
        base.Start();


    }

    public void SetUpCraftSlot(ItemData_Equipment _data)//设置CraftSlot的公开函数
    {
        if (_data == null)
            return;
        item.data = _data;
        itemImage.sprite = _data.icon;
        itemText.text = _data.name;

       
    }
    private void OnValidate()
    {
        //UpdateSlots(item);
    }

    public override void OnPointerDown(PointerEventData eventData)
    {
        ItemData_Equipment craftData = item.data as ItemData_Equipment;

        Inventory.instance.CanCraft(craftData, craftData.craftingMaterials);

    }
}
相关推荐
stars-he11 分钟前
FPGA学习笔记(6)逻辑设计小结与以太网发送前置
笔记·学习·fpga开发
天天进步201520 分钟前
工厂模式的应用:数据读取与算法创建的解耦—— QuantConnect/Lean 源码分析系列二
c#
xiaowu08025 分钟前
C# GetType的常规用法汇总
开发语言·c#
老朱佩琪!28 分钟前
Unity桥接模式
unity·设计模式·c#·桥接模式
熬了夜的程序员28 分钟前
【Rust学习之路】第 0 章:理解 Rust 的核心哲学
开发语言·学习·rust
EniacCheng30 分钟前
【RUST】学习笔记-环境搭建
笔记·学习·rust
d111111111d33 分钟前
STM32编码电机闭环PID调节教程。
笔记·stm32·单片机·嵌入式硬件·学习·面试
技术小甜甜35 分钟前
[Godot][入门] 安装与版本选择:3.x 还是 4.x?(按项目类型一键决策)
游戏引擎·godot·游戏开发·2d
我是小狼君39 分钟前
【Unity/C# 基础算法】从入门到进阶:线性、插值与斐波那契查找深度解析
c#
陈言必行42 分钟前
Unity 之 物理引擎中三种刚体力施加方式详解
unity·游戏引擎