unity简单的背包系统笔记(三)(有视频讲解)

本文档详细介绍了在Unity中实现背包系统拖拽功能的步骤,包括创建脚本、使用IBeginDragHandler、IDragHandler、IEndDragHandler接口,解决拖动过程中被其他格子挡住的问题,以及利用射线判断目标位置。同时,重点讨论了如何在拖动时调整物体的中心锚点位置,以实现流畅的拖拽体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现拖拽功能

新建脚本(为了能实现拖拽脚本我们要拖拽的是slot脚本)
  使用新的命名空间,UntiyEngine.EventSystems
  IBeginDragHandler,IDragHandler,IEndDragHandler

q:拖拽的过程中会被其他的格子挡住
 d:在Untiy中因为渲染的顺序,为了不被挡住,我希望他跟它的父级脱离管理,并放在grid的位置上

logic:脱离完父子关系之后,我希望放到格子里,如果没有东西放进去,如果有东西和格子里的东西互换位置,为了让物品有交换我们要知道一开始的父级是什么
  判断要到哪里去,我们使用鼠标使用射线的方法,添加canvas group组件, 
  鼠标当前的这个点向屏幕方向发射一条射线在最上级的这个层面会被我碰撞到然后返回一系列 信息 |blocks raycasts(射线)如果勾选这个选项我只能在点击的时候获得信息而在拖动的时候不能,所以我们在拖拽的过程中把这个功能关掉

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


public class ItemOnDrag : MonoBehaviour,IBeginDragHandler, IDragHandler, IEndDragHandler//还没有实现方法
{
    public Transform originalParent;
    public void OnBeginDrag(PointerEventData eventData)
    {
        originalParent = transform.parent;
        transform.SetParent(transform.parent.parent);
        transform.position = eventData.position;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值