public void OnPointerDown(PointerEventData eventData)
{
if (eventData.button != PointerEventData.InputButton.Left) return;
print(j++);
//自身为空
//1,IsPickItem=true 把pickItem放到当前位置
//按下Ctrl 放置当前鼠标上的物品的一个
//没有ctrl 放置当前鼠标上的物品的所有
//2,IsPickItem=false 不做任何处理
//自身不为空
//1,IsPickItem=true pickItem跟当前的物品交换
//自身ID==pickItem.id
//按下Ctrl 放置当前鼠标上的物品的一个
//没有ctrl 放置当前鼠标上的物品的所有
//可以完全放下
//放下其中的一部分
//自身ID!=pickItem.id pickItem跟当前的物品交换
//2,IsPickItem=false 把当前的物品槽的物品放在鼠标上
//按下Ctrl 取得当前物品槽物品的一半
//没有按下Ctrl 把当前的物品槽的物品放在鼠标上
// 自身不为空
if (transform.childCount > 0)
{
Item currentUI = transform.GetChild(0).GetComponent<Item>();
//2,IsPickItem=false 把当前物品槽的物品放到鼠标上
if (Objectsinfo.Instance.IsPickItem == false)//当前没有选中物品(当前手上没有物品)当前鼠标没有任何物品
{
//按下Ctrl 取得当前物品槽物品的一半
if (Input.GetKey(KeyCode.LeftControl))
{
int AmountPick = (currentUI.Count + 1) / 2;//捡起的个数
Objectsinfo.Instance.PickItemUI(currentUI, AmountPick);
int Residue = currentUI.Count - AmountPick; //剩余个数
if (Residue <= 0)
{
Destroy(currentUI.gameObject);//销毁当前物品槽里面的物品
}
else
{
currentUI.SetAmount(Residue);//更新物品槽里面的物品个数
}
}
//没有按下Ctrl 把当前的物品槽的物品放在鼠标上
else
{
Objectsinfo.Instance.PickItem.SetIconName(currentUI.id,currentUI.Count);//把当前物品槽的信息 复制给pickItem(跟随鼠标移动)
Objectsinfo.Instance.IsPickItem = true;
Objectsinfo.Instance.PickItem.Show();
Destroy(currentUI.gameObject);//销毁当前物品槽里面的物品
}
}
//1,IsPickItem = true pickItem跟当前的物品交换
else
{
//自身ID==pickItem.id
if (currentUI.id == Objectsinfo.Instance.PickItem.id)
{
//按下Ctrl 放置当前鼠标上的物品的一个
if (Input.GetKey(KeyCode.LeftControl))
{
if (currentUI.info.capacity > currentUI.Count)//当前物品槽还有容量
{
currentUI.AddAmount();
Objectsinfo.Instance.RemoveItem();
}
else
{
return;
}
}
//没有ctrl 放置当前鼠标上的物品的所有
else
{
if (currentUI.info.capacity > currentUI.Count)//当前物品槽还有容量
{
int amountRemain = currentUI.info.capacity - currentUI.Count;//当前物品槽剩余空间
if (amountRemain >= Objectsinfo.Instance.PickItem.Count)//完全可以放下
{
currentUI.SetAmount(currentUI.Count + Objectsinfo.Instance.PickItem.Count);
Objectsinfo.Instance.RemoveItem(Objectsinfo.Instance.PickItem.Count);
}
//放下其中的一部分
else
{
currentUI.SetAmount(currentUI.Count + amountRemain);
Objectsinfo.Instance.RemoveItem(amountRemain);
}
}
else
{
return;
}
}
}
//自身的ID跟pickItem上的ID不同
else
{
int id = currentUI.id;
int amount = currentUI.Count;
currentUI.SetIconName(Objectsinfo.Instance.PickItem.id, Objectsinfo.Instance.PickItem.Count);
Objectsinfo.Instance.PickItem.SetIconName(id, amount);
}
}
}
//自身为空 1,IsPickItem=true 把pickItem放到当前位置
//按下Ctrl 放置当前鼠标上的物品的一个
//没有ctrl 放置当前鼠标上的物品的所有
//2,IsPickItem=false 不做任何处理
else
{
//1,IsPickItem=true
if (Objectsinfo.Instance.PickItem == true)
{
//按下Ctrl 放置当前鼠标上的物品的一个
if (Input.GetKey(KeyCode.LeftControl))
{
this.StroeItem(Objectsinfo.Instance.PickItem.info, 1);
Objectsinfo.Instance.RemoveItem();
}
//没有ctrl 放置当前鼠标上的物品的所有
else
{
for (int i = 0; i < Objectsinfo.Instance.PickItem.Count; i++)
{
this.StroeItem(Objectsinfo.Instance.PickItem.info);
}
Objectsinfo.Instance.RemoveItem(Objectsinfo.Instance.PickItem.Count);
Objectsinfo.Instance.PickItem.Hide();
}
}
else
{
return;
}
}
}
老师请看