前期工程我们终于实现了技能列表的显示,嗯,终于可以看到角色的技能啦。但是依照现在的尿性,你不做出快捷栏的话,这些技能都是只能看的。为了更好的释放技能/使用物品,现在开始制作快捷栏。
那么首先,我们必须持有一个快捷栏。
一、建立快捷栏
首先现建立一个Invisiable Wiedgt,命名为ShortCutUI,然后在内部建立6个UISprite,将图标定义为Grid,加上BoxCollider,这样我们初步的快捷栏就做好了。
二、实现技能的拖动
先明确一个概念,基于最优方案,一定是将技能的图标拖到快捷栏上。那么就会用到老朋友UIDragDropItem类,首先我们对技能图标建立脚步,并使其继承自UIDragDropItem类,并使其选中CloneOnDrop选项,然后通过其中的OnDragDropStart方法来管理克隆图标的父类(以实现自由拖动)以及OnDragDropRelease方法来实现拖动结束的过程。
根据上述思路,脚本如下:
Class SkillItemIcon : UIDragDropItem
{
private skillid;
Override OnDragDropStart() //需要注意:通过对基类UIDragDropItem的分析,我们可以得知,此方法的作用对象是拖动对象的克隆,及我们的操作目标,具体见NGUI的代码
{
base.OnDargDropStart( );
skillid = tranform.parent.GetCompnent<SkillItem>().id; //获取克隆父类(及技能的Prefabs)上的id
tranfrom.parent = root.parent;
}
Override OnDragDropRelease(gameobject surface)
{
base.OnDargDropRelease(surface);
if(surface.tag != null && surface.tag == Tag.shortcut)
{
surface.GetCompnent<ShortCutGrid>( ).SetSkill(skillId); //ShortCutGrid中的SetSkill方法后续进行构建,体现面向对象的思路——即构建一个模块,调用一个模块
}
}
}
以上就完成了今日的要求