• QQ21031394

    工作时间

    周一至周五:9:30-18:30

    周末及节日:根据情况调休

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方QQ群

站长推荐
提百万 联盟管理员
  • 未知地域
  • 内测小天使

    内测期间为论坛做出突出贡献的会员
  • 优秀学员勋章

    通过近期表现由站长颁发
  • 优秀新人勋章

    通过近期表现由站长颁发
  • 高级学员勋章

    通过近期表现由站长颁发
  • 特级学员勋章

    通过近期表现由站长颁发
  • 天工合约会员

    拥有浏览和下载天工精品模型区权限
  • 3644发帖数
  • 1969主题数
  • 0关注数
  • 148粉丝

[UI界面引导] UI编辑器案例:拖拽建塔

[复制链接]
提百万 发表于 2020-11-18 01:44:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
提莫作坊QQ群:提莫作坊www.tbwlm.cn

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1. 需求

1. 通过拖拽控件在场景中创建单位;
2. 场景被分为若干个格子,单位只能站在某个格子的正中间;
3. 拖拽过程中,如果拖拽的点还在UI范围内,则显示一张图片,否则显示式神的真实单位;

2. 拼界面

首先我们来拼个界面,就让这个式神的列表位于屏幕的正下发,紧贴屏幕左下角和右下角。基于以上需求,我们需要一个水平滚动列表,列表中有若干个按钮,通过按钮的拖拽事件实现拖拽建塔。

2.1 底板`spt_bg`

为了美观,可以先配置一个底板,使用一个九宫的图片即可。我将其命名为`spt_bg`,锚点在左下角,位置为`(0, 0)`,尺寸为`(100%, 180)`。



2.2 按钮列表`list_btn_unit`

然后就是真正的功能部分,需要配置一个水平滚动列表,我将其命名为`list_btn_unit`,同样的锚点在左下角,位置为`(30, 0)`,尺寸x为`100%-60`,主要是需要利用列表的裁剪功能。



2.3 配置列表项

列表项内有1个控件:`btn_unit`,是个按钮。`btn_unit`是用来响应拖拽事件的功能性按钮。



2.4 拖拽显示图片`spt_unit`

同时,我们还需要配置一个拖拽显示的图片`spt_unit`,初始隐藏。

3. 配置界面数据

现在列表里只有一个犬神的头像,这显然不是我们的需求。不如我们就用『可用式神数组』来获取所有式神的头像好了。

顺便也把单位类型的id给定义好。



配置好了之后,在界面初始化事件下,修改列表项的内容。



4. 画格子

画格子就很简单了,根据坐标算一算~



5. 拖拽

终于到了最核心的部分:拖拽!~

5.1 拖拽过程整理

1. 需要知道当前拖拽的点是在`spt_bg`内还是在`spt_bg`外;
2. 如果原本就在`spt_bg`内,但是拖拽过程中判断到鼠标的位置在`spt_bg`外面了,那么证明是从`spt_bg`内部出去了,想要创建单位;
3. 如果原本不在`spt_bg`内,但是拖拽过程中判断到鼠标的位置在`spt_bg`内部了,那么证明是从`spt_bg`外部回来了,想要撤销创建;
4. 需要变量:`spt_unit_show`表示在控件内部时的图片是否处于显示状态,`drag_outside`表示原本是在外部还是内部,`drag_unit`表示当前正在拖拽的单位及其有无;

5.2 原本在`spt_bg`的外部

5.2.1 从`spt_bg`外部回到`spt_bg`内部

如果从控件外部回来,就把`spt_unit`显示出来,并且设置好对应的状态。



同时,将已经创建的单位删除掉。



5.2.2 保持在`spt_bg`外部

如果鼠标保持在`spt_bg`的外部,首先我们要先算出界面坐标对应的场景点在二维格子方阵中的索引值,因为我们只需要把单位放到格子上。



接下来要判断`1 <= i && i <= 10 && 1 <= j && j <= 10`才能走之后的逻辑,否则这个场景点超出了我们的实现范围。

如果在实现的场景范围内,且判断到还没创建单位,就先创建单位。



然后再判断`i`和`j`与上次的`last_i`、`last_j`有区别,那么要移动一下单位到当前格子里。



5.3 原本在`spt_bg`内部

5.3.1 从`spt_bg`内部拖到`spt_bg`外部

如果从`spt_bg`拖出去,就把`spt_unit`隐藏掉,并且设置好对应的状态。



5.3.2 保持在`spt_bg`内部

如果保持在`spt_bg`的内部,如果`spt_unit`还没有显示出来则优先显示`spt_unit`。



然后更新`spt_unit`的位置,保证拖拽效果。



5.4 拖拽结束

拖拽结束时同样先判断拖拽结束的点在哪里,如果在控件外部就算出场景点在格子方阵中的索引值并在格子正中心创建单位。



创建完成后,将所有状态回归拖拽前的状态。


免责条款:本站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。

本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

本网站所提供的信息,只供参考之用。本网站不保证信息的准确性、有效性、及时性和完整性。本网站及其雇员一概毋须以任何方式就任何信息传递或传送的失误、不准确或错误,对用户或任何其他人士负任何直接或间接责任。在法律允许的范围内,本网站在此声明,不承担用户或任何人士就使用或未能使用本网站所提供的信息或任何链接所引致的任何直接、间接、附带、从属、特殊、惩罚性或惩戒性的损害赔偿。

强调下版规的规定,如有恶意灌水从重处罚:
=====发表主题规则=======
1.主题内容请一定要附带预览图片,谢谢;
2.搬运来的东西请尽量不要卖钱!;
3.发帖有任何疑问请联系QQ21031394;
=====发表回复规则=======
1.禁止直接复制标题内容的;
2.禁止纯数字或者纯字母的;
3.禁止乱打一通文不对题;
4.禁止屠版和刷分行为;
第一次扣分处理,第二次扣分+警告,警告三次禁言三天,绝不手软,情况严重的直接封号,请大家珍惜自己的账号!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
天工维度唯一QQ群
786014245

欢迎进群交流,入群答案:编辑器

  • 官方在线客服

    QQ客服:小雪

    点击交谈

    QQ客服:砂糖

    点击交谈

    团队老大:荀公子

    商务合作
  • 上海市静安区共和新路4718号宏慧新汇园6号楼603室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方QQ群

Powered by 天天RPG&DZX3.4 ©2020-2021 Comsenz Inc.提百万设计( 沪ICP备18032615号-1 )营业执照