U G U I

1.Scroll View

Horizontal Scrollbar/Vertical Scrollbar参数Visibility设置滑动条设置水平/垂直滑动条可见/隐藏 

Viewport 视口 信息可见范围

Content 内容 所有展示的内容添加作为其子物体

 2.Dropdown 下拉列表

 Label 默认选项框

Arrow 下拉列表箭头

Template 模板/下拉列表的所有值(视口Veiwport和垂直滑动条)

3.UGUI布局管理 

水平布局,垂直布局,网格布局

网格布局(适用于背包),给Panel添加网格布局组件Grid Layout Group

 

Padding 网格与边缘的水平垂直间距

Cell Size 单元格大小

Spacing 单元格与单元格之间的水平垂直间距

 4.背包物品交换

给每个单元格添加Canvas Group组件,盒子碰撞器(覆盖单元格,用于射线碰撞检测,拖拽的物体浮于渲染最高处,向下层发射射线) //纠正 不需要盒子碰撞器,射线碰撞检测的是渲染层

 

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

/*
*创建者:
*创建时间:
*描述:
*版本:
*/
public class _3_8_1 : MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler,IInitializePotentialDragHandler
{
    Sprite spr;//图片变量用于两张图片的交换,作为中间变量
    CanvasGroup cg;//单元格添加的组件
    // Start is called before the first frame update
    void Start()
    {
        cg= GetComponent<CanvasGroup>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    void IDragHandler.OnDrag(PointerEventData eventData)//拖拽中
    {
        transform.position = Input.mousePosition;//鼠标的位置就是拖拽物品的位置
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
        cg.blocksRaycasts = false;//blocksRaycasts为false时可以检测下一层物品(由于拖拽的物品处于渲染最高层,会遮挡住下一层物品)
    }

    public void OnInitializePotentialDrag(PointerEventData eventData)
    {

    }

    public void OnEndDrag(PointerEventData eventData)//拖拽结束
    {
        cg.blocksRaycasts = true;//不再进行射线检测
        //transform.position = eventData.position;//把拖拽的对象,放到当前位置
        if (eventData.pointerEnter!=null&&eventData.pointerEnter.CompareTag("Equip"))//若射线碰撞检测到的物体不为Null并且该游戏对象的标签为Equip(装备)才进行下一步操作
        {
            GameObject go = eventData.pointerEnter;//拖拽物品所碰撞到的对象(交换的对象);

            spr = go.GetComponent<Image>().sprite;//将交换的对象的图片用中间变量存储
            go.GetComponent<Image>().sprite = transform.GetComponent<Image>().sprite;//将拖拽物品的图片赋值给交换的对象
            transform.GetComponent<Image>().sprite = spr;//将交换的对象的图片赋值给拖拽的物品
            go.transform.localPosition = Vector3.zero;//将各自的相对(父物体)坐标置为0;
            transform.localPosition= Vector3.zero;
        }
        else
        {
            transform.localPosition = Vector3.zero;//若没有碰撞对象或碰撞到的对象标签不为Equip则不能进行交换,并且将图片的位置复原(OnDrag方法中图片的位置在拖拽时发生了改变,停留在拖拽结束的那一帧鼠标所在的位置);
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值