在设计背包或者技能栏的时候,通常采用MVC模式。
Model脚本读取存放在数据库中的物品或技能的相关资源(Icon,prefabs)
view脚本将读取的资源显示在背包或技能栏中。
而Controller脚本我则用来实现物品或技能的拖拽。而我的Drag脚本分在Controller中,给每个物品或技能资源都挂上脚本,实现拖拽核心功能。
而Drag脚本中的方法Unity已提供接口。
主要方法是public void OnBeginDrag (PointerEventData eventData)
public void OnDrag(PointerEventData eventData)
public void OnEndDrag(PointerEventData eventData)
而函数private void SetDraggedPosition(PointerEventData eventData)是Unity提供的让拖拽目标跟随鼠标移动的方法,我在上面3个函数中都进行了调用。
Start()和OnbeginDrag中的数据都是为OnEndDrag中判断能否交换目标物品的位置做准备,以及如果能则实现交换。实现的方法千差万别,感觉我这里写的方法适用范围很小,若要参考推荐重写这部分功能(判断能否交换及实现交换)
代码如下
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
/// <summary>
/// MVC-