Unity3d - RPG项目学习笔记(二十八)

时间:2022-04-05 21:41:56

前期工程我们终于实现了技能列表的显示,嗯,终于可以看到角色的技能啦。但是依照现在的尿性,你不做出快捷栏的话,这些技能都是只能看的。为了更好的释放技能/使用物品,现在开始制作快捷栏。

那么首先,我们必须持有一个快捷栏。

一、建立快捷栏

首先现建立一个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方法后续进行构建,体现面向对象的思路——即构建一个模块,调用一个模块

        }

    }

}

以上就完成了今日的要求