zoukankan      html  css  js  c++  java
  • Unity3d

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

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

    一、建立快捷栏

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

            }

        }

    }

    以上就完成了今日的要求

  • 相关阅读:
    用Service充当Domain Object
    Scrum方法回顾
    为什么使用User Story Map
    前端状态管理之状态机
    项目进度管理注意事项
    单元测试遇到的最难的问题
    JS AMD模块的循环依赖
    jupyter notebook常用快捷键
    Jupyter-NoteBook-你应该知道的N个小技巧
    Python之配置日志的几种方式(logging模块)
  • 原文地址:https://www.cnblogs.com/yanbenxin/p/5904094.html
Copyright © 2011-2022 走看看