我们打开上一篇65QFrameWork道具栏物品生成的项目,
本章要做的事情是实现物品的拖拽功能
修改脚本:UISlot.cs
实现接口后编写脚本:
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace QFramework {
public class UISlot : MonoBehaviour,IBeginDragHandler,IDragHandler,IEndDragHandler{
public Text Count;
public Text Name;
bool mDragging = false;//是否拖拽
void SyncItemToMousePos() {
//获取鼠标位置
var mousePos = Input.mousePosition;
//将品目坐标 转换成 RectTransform本地坐标
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(transform as RectTransform,
mousePos,
null,
out var localPos))
{
//转换名字位置为本地位置
Name.LocalPosition2D(localPos);
}
}
//开始拖拽时被调用
public void OnBeginDrag(PointerEventData eventData){
if (mDragging)
return;
mDragging = true;
SyncItemToMousePos();
}
//拖拽时调用
public void OnDrag(PointerEventData eventData){
if (mDragging) {
SyncItemToMousePos();
}
}
//松开拖拽调用
public void OnEndDrag(PointerEventData eventData){
if (mDragging) {
Name.LocalPositionIdentity();
}
}
}
}
运行项目 - 点击物品即可完成拖拽功能
本章编写了UISlot脚本(UISlot.cs脚本绑定在对象UISlot身上)继承了三个拖拽函数,实现拖拽功能
接下来的文章内容:
1.QFrameWork关联Slot
2.位置存储功能
3.点击名称寻找地点功能
4.隐藏怪物的生成
5.怪物I攻击范围内的主动攻击
6.掉落坐骑蛋的获取
7.异步传送转换场景
以及开放回合制、坐骑系统、宠物系统、背包系统、神炼系统、商城系统、Boss的目标跟随任务导航系统以及UI播放3D动画效果等等。
具体项目运行效果请关注water1024的b站视频项目演示《破碎纪元》