游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2332

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 3317|回复: 42

[凉鞋同学] Unity 游戏框架搭建 (十五) 优雅的QChain (零)

[复制链接]  [移动端链接]
排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
发表于 2017-10-18 19:43:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 liangxiegame 于 2018-8-11 19:08 编辑

  加班加了三个月终于喘了口气,博客很久没有更新了,这段期间框架加了很多Feature,大部分不太稳定,这些Feature中实现起来比较简单而且用的比较稳定的就是链式编程支持了。
什么是链式编程?
我想大家应该都接触过DOTween,用起来是这样的。
[C#] 纯文本查看 复制代码
    transform.DOMove(Vector3.one, 0.5f)
                .SetEase(Ease.InBack)
                .OnKill(() => Debug.Log("on killed"))
                .OnComplete(() => Debug.Log("on completed"));
像以上.XXX().YYY().ZZZ()这种写法就叫链式编程了。
QChain是什么?
  QFramework中有零零散散支持了链式写法,打算整理出来作为一个独立的库进行过维护。目前的使用方式如下:
[C#] 纯文本查看 复制代码
            this.Show()
                .LocalIdentity() // 归一化
                .LocalPosition(Vector3.back)
                .LocalPositionX(1.0f)
                .Sequence() // 开始序列
                .Delay(1.0f)
                .Event(() => Log.I("frame event"))
                .Until(() => count == 2)
                .Event(() => Log.I("count is 2"))
                .Begin() // 执行序列
                .DisposeWhen(() => count == 3)
                .OnDisposed(() => Log.I("On Disposed"));

            this.Repeat()
                .Delay(1.0f)
                .Event(() => count++)
                .Begin()
                .DisposeWhenGameObjDestroyed();

            this.Repeat(5)
                .Event(() => Log.I(" Hello workd"))
                .Begin()
                .DisposeWhenFinished(); // 默认是这个

            this.Sequence()
                .Delay(1.0f)
                .Event(() => Log.I("delay one second"))
                .Delay(1.0f)
                .Event(() => Log.E("delay two second"))
                .Begin();
为什么要用QChain
  前段时间在给公司写一个蓝牙的插件,比较麻烦的是蓝牙管理类的状态同步和当状态改变时通知其他对象的问题。但是有了QChain,蓝牙连接的代码可以这样写:
[C#] 纯文本查看 复制代码
            this.Sequence()
                .Event(() => PTBluetooth.Initialize(true, false))
                .Until(() => PTBluetooth.IsInitialized)
                .Until(() => PTBluetooth.IsOpened)
                .Event(() => PTBluetooth.ScanPeripheral((address, name, rssi, adInfo) => name.Contains("device")))
                .Until(() => PTBluetooth.ScannedDevices.Count >= 1)
                .Event(() => PTBluetooth.ConnectToPeripheral(PTBluetooth.ScannedDevices[0].Address))
                .Begin()
                .DisposeWhen(()=>
                {
                    if (PTBluetooth.IsInitialized && !PTBluetooth.IsOpened)
                    {
                        // TODO: 这里处理初始化失败逻辑
                        return true;
                    }

                    // ... 其他失败逻辑
                    return false;
                });
  这样写的好处是,逻辑不会分散到处都是。相比于协程,生命周期更好进行管理(不用管理协程对象),可作为协程的替代方案。还有其他的好处随着本系列的更新逐个讨论。
源码地址:
  目前在写该文的时候,还没进行整理。Github也是在上一秒建好的- -,打算从最简单最容易实现的代码开始逐步整理到如下仓库里。   如果感兴趣参与维护,欢迎联系我。 GitHub - liangxiegame/QChain: Unity Chainning Support:https://github.com/liangxiegame/QChain

相关链接:
我的框架地址:https://github.com/liangxiegame/QFramework
教程源码:https://github.com/liangxiegame/QFramework/tree/master/Assets/HowToWriteUnityGameFramework/
QFramework &游戏框架搭建QQ交流群: 623597263
转载请注明地址:凉鞋的笔记 http://liangxiegame.com/
微信公众号:liangxiegame
如果有帮助到您:
如果觉得本篇教程对您有帮助,不妨通过以下方式赞助笔者一下,鼓励笔者继续写出更多高质量的教程,也让更多的力量加入 QFramework 。
  • QFramework 一个 Star
    • 地址: https://github.com/liangxiegame/QFramework
  • 给 Asset Store 上的 QFramework 并给个五星(需要先下载)
    • 地址: http://u3d.as/SJ9
  • 购买 gitchat 话题:《命名的力量:变量》
    • 价格: 12 元
    • 地址: https://gitbook.cn/gitchat/activity/5b65904096290075f5829388
  • 购买同名的蛮牛视频课程录播课程:
    • 价格 49.2 元
    • 地址: http://edu.manew.com/course/431
  • 购买同名电子书:https://www.kancloud.cn/liangxiegame/unity_framework_design
    • 价格 49.2 元,内容会在 2018 年 10 月份完结






回复

使用道具 举报

6蛮牛粉丝
1048/1500
排名
2858
昨日变化

0

主题

286

帖子

1048

积分

Rank: 6Rank: 6Rank: 6

UID
228538
好友
9
蛮牛币
2198
威望
0
注册时间
2017-6-24
在线时间
282 小时
最后登录
2018-10-19
发表于 2017-10-19 09:16:53 | 显示全部楼层
感谢分享, 学到了

回复

使用道具 举报

7日久生情
2730/5000
排名
2917
昨日变化
13

2

主题

1841

帖子

2730

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
241666
好友
0
蛮牛币
10455
威望
0
注册时间
2017-9-6
在线时间
409 小时
最后登录
2018-10-21
发表于 2017-10-19 09:55:40 来自Mobile--- | 显示全部楼层
感谢分享

回复

使用道具 举报

7日久生情
4306/5000
排名
2373
昨日变化

5

主题

3109

帖子

4306

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209186
好友
5
蛮牛币
5490
威望
0
注册时间
2017-3-1
在线时间
628 小时
最后登录
2018-10-17
发表于 2017-10-19 13:03:40 | 显示全部楼层
谢谢分享

回复

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-19 14:22:49 | 显示全部楼层

谢谢支持

回复 支持 反对

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-19 14:22:57 | 显示全部楼层

谢谢支持

回复 支持 反对

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-19 14:23:08 | 显示全部楼层

谢谢支持

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1342/1500
排名
2196
昨日变化

15

主题

196

帖子

1342

积分

Rank: 6Rank: 6Rank: 6

UID
131349
好友
3
蛮牛币
451
威望
0
注册时间
2015-12-9
在线时间
530 小时
最后登录
2018-10-19
发表于 2017-10-20 08:51:02 | 显示全部楼层
厉害                                 
[发帖际遇]: for的三次元 在网吧通宵,花了 2 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
659/1000
排名
4055
昨日变化
2

1

主题

104

帖子

659

积分

Rank: 5Rank: 5

UID
102685
好友
0
蛮牛币
1789
威望
0
注册时间
2015-5-23
在线时间
214 小时
最后登录
2018-9-17
发表于 2017-10-20 09:22:17 | 显示全部楼层
加班是提升技术的最快途径

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3411
昨日变化

1

主题

371

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
122160
好友
1
蛮牛币
1669
威望
0
注册时间
2015-9-10
在线时间
236 小时
最后登录
2018-8-1
发表于 2017-10-20 09:32:29 | 显示全部楼层
感谢分享
[发帖际遇]: 一个袋子砸在了 Vincher 头上,Vincher 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-20 09:43:52 | 显示全部楼层
renyongjun 发表于 2017-10-20 09:22
加班是提升技术的最快途径

觉悟不错 哈哈哈

回复 支持 反对

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-20 09:44:04 | 显示全部楼层

谢谢支持

回复 支持 反对

使用道具 举报

排名
2203
昨日变化

35

主题

471

帖子

2251

积分

Rank: 9Rank: 9Rank: 9

UID
148923
好友
64
蛮牛币
2411
威望
0
注册时间
2016-5-17
在线时间
735 小时
最后登录
2018-10-21

专栏作家

QQ
 楼主| 发表于 2017-10-20 09:44:16 | 显示全部楼层

过奖 谢谢支持

回复 支持 反对

使用道具 举报

7日久生情
2025/5000
排名
773
昨日变化

0

主题

127

帖子

2025

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
88589
好友
1
蛮牛币
2755
威望
0
注册时间
2015-4-2
在线时间
730 小时
最后登录
2018-10-20
发表于 2017-10-20 09:47:00 | 显示全部楼层
感谢分享

回复

使用道具 举报

排名
33441
昨日变化
14

0

主题

4

帖子

30

积分

Rank: 1

UID
160685
好友
0
蛮牛币
52
威望
0
注册时间
2016-8-5
在线时间
18 小时
最后登录
2017-12-1
发表于 2017-10-20 09:50:58 | 显示全部楼层
有一个插件unirx,里面基本上都是链式编程

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表