Unity3d 简单的背包系统(物品交换)
来源:互联网 发布:外设马淘宝 编辑:程序博客网 时间:2024/05/02 00:04
文档
目标:做一个可以拖拽的背包 时间(1小时)
1,可以拖拽(UI Drag)
2,背包(格子) 格子(有物品)(没有物品)(tag是格子还是物品)
3,当格子有物品(两个物品交换位置) 没有物品(将物品放到格子里)
预览图:
根据Hierarchy面板创建控件UI Panel--->Scroll View ---->Gird(Empty gameobject)----很多Image等
Grid加了Grid Layout Group(用于UI排版的控件) Scroll Rect(Script)使物体在一定范围内有一定的弹性缓动和用于固定(水平、垂直)的移动(查找详细资料了解)
还有一个Panel后面的Top(Empty GameObject) 用于使物品在拖拽时渲染在最高层,
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;public class UIBackPack :EventTrigger{ //现在物品的父物体 private Transform nowparent; //Top的位置 private Transform TopPos;// Use this for initializationvoid Start () { TopPos = transform.Find("Top");}// Update is called once per framevoid Update () {} //通过重写的鼠标监听事件(开始拖动) public override void OnBeginDrag(PointerEventData eventData) { nowparent = transform.parent; //把物品渲染到最高层 transform.parent = TopPos; } //拖拽的物体和鼠标一起移动(拖动中) public override void OnDrag(PointerEventData eventData) { //使物体跟着鼠标移动 transform.position = Input.mousePosition; //并且把物体设置为不是射线的目标,是射线不被遮挡,才能检测物体下方的物体 IsRaycast(false); } //将物体拖到格子下 (拖动结束) public override void OnEndDrag(PointerEventData eventData) {// 检测当前射线碰撞到的物体GameObject go = eventData.pointerCurrentRaycast.gameObject; IsRaycast(true); //判断射线是否检测到物体 if(go==null||go.tag!="bag"||go.tag!="goods") {//拖到其他地方时,物体返回到开始的父物体的位置和成为子物体SetPosandParent(transform, nowparent); return; } //如果当前物体是格子(没有物品) else if(go.tag=="bag") { SetPosandParent(transform, go.transform); } //如果当前物体是物品 else if(go.tag=="goods") { Transform GoParent = go.transform.parent; SetPosandParent(go.transform,nowparent); SetPosandParent(transform,GoParent); } } //重构 工具 开启关闭射线 private void IsRaycast(bool flag) { //设置物体是否挡住射线 transform.GetComponent<Image>().raycastTarget = flag; } //写入我们的父物体以及位置 private void SetPosandParent(Transform trans,Transform parent) { trans.parent = parent; trans.position = parent.position; }}
阅读全文
1 0
- Unity3d 简单的背包系统(物品交换)
- 背包系统中,交换两个物品的位置
- Unity3D自学笔记——UGUI背包系统(七)物品的装备与卸下
- Unity3D自学笔记——UGUI背包系统(八)物品的分类与整理
- Unity3d背包系统(三)—— 设计物品类的JSON文件
- 【Unity&NGUI】背包系统物品的累加
- Unity3D NGUI 物品系统
- Unity3d背包系统系统(一)——第一个类(Item物品类)
- 物品存储与背包系统
- 物品存储与背包系统
- Unity3D自学笔记——UGUI背包系统(三)物品弹出提示框
- Unity3D自学笔记——UGUI背包系统(四)角色物品数据建立
- Unity3D自学笔记——UGUI背包系统(五)沿用Attribute设计实现物品等级
- Unity3d背包系统(四)—— 设计物品管理类——InventoryManager
- 泛化物品的背包问题
- 物品无限的背包问题
- Unity3D鼠标选中物品并拖动物品的方法
- Unity3D鼠标选中物品并拖动物品的方法
- 计算机网络作业三
- java字符串处理
- 利用CONSTRUCT2制作简单的躲避游戏
- JAVAEE企业级应用开发浅谈之二:MVC和三层架构
- 六大设计原则之依赖倒置原则
- Unity3d 简单的背包系统(物品交换)
- 编程判断是C源文件还是C++源文件
- 1003. Emergency (25)
- 【bfs && 如何想到bfs】2014 Benelux Algorithm B
- PAT-甲级-1001 A+B Format
- 浅谈return
- python dict和set
- HDU5421-Victor and String
- scrapy爬虫-爬取慕课网全部课程