zoukankan      html  css  js  c++  java
  • 青瓷qici

    hello,小伙伴们,我们来继续编写相关的程序。

    前几章我们已经基本把界面等问题搞定了,现在我们就来写脚本让整个流程统一起来。

    看看我们现在有了什么?一个界面还有他的层次结构

    青瓷界面绑定UI.js创建

    152fbb31-e980-4454-8047-1e802f1e7afe06e170c8-b49b-467d-80c8-fed23e563f88

    化成关系图如下,我们调整一下, 因为背景应该上面抽出一层,作为公共背景,让这个背景来控制自己到底显示高亮还是暗黑

    ec85be36-5201-45e8-bd1a-bc6ff8765996378d6c52-a4ef-4a58-a7b7-c3311a32c2c5

    调整完毕后,我们来划分需要编写的逻辑,前面最高控制整个程序的是UIRoot我们为他创建一个脚本。下面每个脚本控制一个效果。

    d29a3b33-7125-44c1-8015-4ffbe97afe54

    好的,我们来动手写程序。可以看到我们当前的目录结构如下,Script中啥也木有。为了少些点代码,我们在界面中创建JS脚本,会附带生成一些我们需要的UI关联参数。

    12ab3d5e-0dfb-45ea-9b42-a79fd00f8cf3620e95f1-b7dd-4853-b7e5-c632e85a8a59image

    创建完成,qici编辑器会自动为我们生成js后缀的js文件,以及为我们的文件创建ID文件,也就是 js.meta 关联界面就是通过这个meta文件,所以版本管理的时候记得加上。

    a6f7d7ab-5962-4aef-a108-914163acff6e1a476b30-fe57-46e8-b20a-35e45d1dd816

    为了查看方便,在资源目录下方有个拉条,可以调整缩放比例,为了看全名字,一般调成最小列表形式。

    a1e8418c-be92-4a15-8688-a5a72fe370623f300ab3-a31b-4fb8-b5ea-4ce594bbc8c8

    文件都建好了,添加版本管理。我们可以忽略Build文件夹,理论上Temp文件夹也可以忽略,不过以免有时候忘记保存,还是加上Temp比较好,在我们编辑的时候Temp会临时保存我们的工作场景。资源文件会生成两个文件,分别是bin , bin.meta 系统帮我们进行了预处理。

    274b6dcb-c654-4103-9c12-f7c8f90bcd0049b9790b-f451-433a-af0b-520534c19a4dbbdcb45a-b926-4a40-8849-59921c46bc6a92688abc-5455-48aa-af89-51e1f071f999df2076e4-1eb8-4a22-86e9-5e9b51e119eb

    -----------------------------------------------------------------

    青瓷脚本设置UI节点关联

    创建脚本,设置本脚本需要管理哪些子元素

    UIRoot的脚本设置。设置它名下管理5个Node节点元素。

    d4cda753-acf9-446a-acdc-9ab992c8acda8e451964-47f8-4d1f-9432-2b285d45a74d

    Bg脚本设置,名下管理两个UINode节点

    ef2ae32e-7c2a-45d0-a24b-4302427c0656713efe81-1081-4231-bc94-363eb12cbeba

    烟火节点的脚本,设置名下管理5个烟火节点。更好的方案是设置成节点数组,由外部设置数组长度和内容,而不必每个设置。

    328c8b2d-0310-4d21-a765-c5a7fef5039832eab67f-0e5d-443a-8a34-8afaec0e002a3549ec44-cb09-4bd2-ac5f-8ced967d9ac4

    获奖节点的脚本,设置名下管理两个节点,分别是快速掉落奖励节点,和最终展示奖品节点

    ed9035b0-668f-4e5d-abeb-6a9c8738f6c84a89a0a5-5d19-4572-a8cd-f27559c5b9f3

    最后还有我们的拉杆节点,管理下属球节点和棍子节点。

    3c32638a-280a-4b3c-b463-7ab473048734

    写好了切回编辑器,在非运行模式下回加载修改的js,转转转,等一下。

    在编辑器运行模式下要切回编辑模式,还要等一会,等后台自动加载修改,进入转转转界面。

    a206dbf7-ee06-4dd8-a85d-7ce43555b23c

    青瓷UI元素绑定脚本

    UIRoot节点,我们采取拖拽的方式,吧RootUI.js文件从项目资源窗口中,Script文件夹下,托转到节点上。点击UIRoot节点,在属性中就能看到已经绑定的脚本。

    我们把我们脚本需要管理的几个Node节点拖拽关联到UIRoot的脚本之上,最终结果如下图。

    7837287d-0793-4b83-8c41-679296f98df974bb73c7-2270-41cb-a87b-93b5b1b54160

    第二步,绑定子元素对应的脚本,

    我们对background节点点击,在属性最下面添加脚本,并如图一步步选择对应的脚本。

    af2a58a6-4df2-4970-afa6-2ce2d802e00ec97ae60b-33ac-4b47-bb09-ffaa0870af5612259562-7b88-488c-84b6-44c5e1657f6f

    选择成功后对元素进行绑定

    e6dccca2-4ae3-4c41-8d39-f7274b0364cbd0a11e02-8c47-4ae0-a1d4-6f63c068ebdee1eb0358-7729-4038-84d2-11a6e63ce91d

    下面分别绑定拉杆,烟火和奖品,还有分享界面

    0b8832f3-0bff-4253-b507-6762d1967a963de5c2f1-f003-4e1c-a3c2-aeea53fd96abd7da0328-333c-4dac-a7c7-3cfef606997e34d561a4-ef29-4cf3-be58-0618ea3ac802

    青瓷如何在编辑器快速调试

    既然已经开始写脚本了,那么调试肯定很频繁了。怎么比较快地调试呢?

    在编辑器,不用改变UI的情况下,进入运行模式。修改代码之后,点菜单工程,刷新场景,

    马上就能加载新的js脚本。编辑器会为我们的新代码加入时间后缀。如果要设断点就进入新的文件吧。

    18ae11e6-cfb4-4df7-b5ed-2b381db8213a 0379d40e-cfa0-4dc8-820a-1627b237bff1image

    青瓷脚本调用前台资源、其他附属脚本、效果

    首先给我们的背景管理脚本增加两个操作,显示和消失暗黑的背景。

    这里用var self = this;是一个比较好的选择,方便到时候函数中各种回调、方法里面直接调用本self中的元素。

    另外脚本中对界面绑定的node对象操作,需要self.gameObject获取。

    3188b142-341e-48b5-8f33-c832749b5b213b78f394-ac6e-497e-a29f-a5c8a1fc0cc3

    第二步,我们给烟火书写调用脚本。

    我们预先排好了烟火的位置不是为了让它一起烧的,所以在函数里头通过外部指定燃放多少个烟火,把我们指定烟火随机截取出来,加入延时进行燃放。

    烟火是粒子系统的元素,本身就有借口reset/start/delay。因此代码如下设置。

    74f4b2f1-a805-4fd2-8914-72716f4d865b

    为了快速调试,我们为这个元素增加一个onClick方法。在编辑窗口运行的情况下,点击刷新场景,加载我们刚才编写好的代码。

    1e44c9fc-f4f5-4fee-9be3-dfef01ac2a1f18ae11e6-cfb4-4df7-b5ed-2b381db8213a[7]0379d40e-cfa0-4dc8-820a-1627b237bff1[7]

    点击我们加载好刚才代码的节点,firework。在他的属性中激活点击事件的捕获。

    761a8471-213a-4dec-94c3-1b09f3e833beca4ffe32-fb2d-4e1c-a1ed-fe2874a0e520

    来,见证奇迹的时刻。

    011

    青瓷Nodes数组元素传入绑定

    前面我们烟火的绑定是一个一个对应的,事实上我们在内部还是作为数组处理,如果直接传入就是数组那不是更爽?

    我们来动动手术。吧我们写了的
    fireworks_0_Node: qc.Serializer.NODE,

    转换成。

    fireworksNode: qc.Serializer.NODES,//烟花对象数组

    然后在界面上重新绑定一下。啊~世界清净了
    cea7cbb0-42fe-4dbf-8002-76dd675c63e759f7afe4-074a-486e-9844-63dddca9b1fbecb32d24-7ccc-46f8-9a87-ee63e2d39cd482fa1df5-c184-4495-b6b0-f39134a0f1ef

    青瓷TweenPosition实现滚动效果

    前面我们已经把遮罩部分做了。忘了回去翻前面的帖子(╯‵□′)╯︵┻━┻

    来来来,我们坐下来继续好好谈。

    现在界面显示是酱紫的,其实上面覆盖了两个图像。

    a21fd51b-cb1d-46db-a426-c75dace08d5a

    我们定义脚本中,先设定取值范围,因为我们的奖品设置关联的素材是雪碧图,所以我们可以直接通过切换frame名称得到对应的图。

    我们现在吧frame名称写下来,以便后面从数组和对象里面获取。

    474a2b5a-9551-4b1d-8bfb-8513492373ac

    唤醒的时候加载下落的脚本,注意下文中获取对象脚本的方式。

    // Called when the script instance is being loaded.
    RewardUI.prototype.awake = function() {
        var self = this;

        if (self.fastImageNode) {
            self.fastPosition = self.fastImageNode.getScript("qc.TweenPosition");
            self.fastFilterGroup = self.fastImageNode.getScript("qc.FilterGroup");
            self.fastBlurX = self.fastFilterGroup.filters[0];
            self.fastImageNode.visible = false;
        };

        if (self.lastImageNode) {
            self.lastPosition = self.lastImageNode.getScript("qc.TweenPosition");
            self.fastImageNode.frame = self.default;
            self.lastImageNode.visible = true;
        };
    };

    6259003f-34ce-4c1b-8706-5a6d656ca71f

    我们把运动的效果制作一下,外部传入回调函数,当执行完成后调用回调函数。

    外部传入初始的模糊度和速度,我们内部自己衰减

    内部是一个递归函数,按照外部的次数来递归。

    bb4aad7a-b102-49c0-8f29-c5f0d619c27a

    最后我们把这两个效果统一对外进行封装

    d05054bf-577e-4b3b-92e7-cba66bc62aa4

    为了调试方便,我们添加一个点击事件,调用自己的show。快速调试

    9cd8b0a3-9c2a-461e-a29c-602f73ee90799b679429-0b2c-4731-9ad4-a7a30971a0821ffd065f-b76f-46f1-b9aa-b48db5a07647

    见证奇迹的时刻来了

    012

    青瓷实现拉杆效果,通过TweenPosition/TweenScale

    下落的效果已经做过了,同样操作,先把节点对应的脚本加载到内存。

    然后对他进行操作,并对外绑定回调函数,感知动作完成。

    这里注意加上一个控制flag,以免在动作过程中被打断。只有完成了flag才有效

    c60f17ee-5ed1-4fa0-b64a-efa9f2f0d6d27e4bfd00-3fd2-496d-997c-a0587d4fa238

    又来见证奇迹了

    013

    青瓷UI节点对子UI节点脚本的调用

    写好了前面的逻辑,到最后关联就不是什么难事了,我们把UI关联了的节点的脚本获取一下

    在加载中绑定动作效果的前后关系,在最后把还不应该显示的内容隐藏掉。

    把棍子的接受外部点击的能力勾上。

    1eff142e-72ed-4f32-8179-38d3131fac84a7a443a3-64cd-458e-bbc1-9286d5681411547342a1-488a-47fc-9feb-8439af4f03f9

    烟花原本是置于抽奖奖品之下的,我们调整下显示顺序。

    45be9553-d6b7-4dc3-8402-32c41d95f2aa

    好的,现在。。。

    又来看看这货。咦,我为什么说又。。

    014

  • 相关阅读:
    程序员面试笔试——链表题目总结分析
    Java实现约瑟夫环
    Java关键字final、static
    test
    Blog 转移
    kali 国内镜像源,以及PD_tools,Vm_tools的安装
    Ubuntu 安装启动Tomcat
    JDK 安装环境配置(ubuntu)
    Python 正则表达式
    Python MySQLdb Mac安装遇到的问题
  • 原文地址:https://www.cnblogs.com/Again/p/5235642.html
Copyright © 2011-2022 走看看