百科问答小站 logo
百科问答小站 font logo



《原神》里面你最希望出限定的npc是哪个? 第1页

  

user avatar   chao-qi-wo-de-jian-pan 网友的相关建议: 
      

出个艾琳,就是蒙德打木桩那个。在广大玩家都帮助下,她已经逐渐学会了洲际导弹,耍猴操作,各种角色的EQ技能,诸武精通。

下面是人物设定

艾琳(5星限定)

神之眼:风

武器:单手剑(因为场景里拿的是单手剑)

归属:蒙德城(因为还没有实际进入西风骑士团,还在准备中)

生日:11月27日

普通攻击•百家剑法:

进行之多7段的普通攻击,最后一段攻击将敌人甩到半空中滞留一段时间。

重击:将敌人牵引至自己身前,造成2段拉扯伤害

下坠攻击:可以自行调整下坠角度,瞄准远处的目标进行洲际导弹打击。


元素战技•木桩训练术

对前方至多6个敌人造成一次风属性伤害,使敌人晕眩0.8秒,打断敌人的前摇。

cd:24秒

元素爆发•复现的技巧

再次释放30秒内最后一名角色使用的元素爆发,等级以所属的角色为准。并以自己为中心释放一道风属性冲击波,击飞敌人。

元素能量:60

cd:20秒

固有天赋1•一次击破!:元素战技•木桩训练术每击中一名敌人,造成的伤害提高6%,持续10秒,最多叠加6层。

固有天赋2•找不到帮手:每当队伍中有一名角色倒下,艾琳的攻击速度提升25%。如果队伍中存活人数不大于2,则额外提升25%的攻击速度。

生存天赋•诸武精通:合成武器突破素材时,有10%概率返还部分材料。

命之座•木桩座(?)

第一层:元素爆发•复现的技巧可以使被复现的元素爆发等级提升2级。

第二层:技能的冷却时间减少20%

第三层:元素战技•木桩训练术的等级提高3级,等级上限提高至15级。

第四层:元素爆发•复现的技巧的影响范围提高50%。在释放后的5秒,所有角色的元素精通提高120。

第五层:元素爆发•复现的技巧的等级提升3级,等级上限提高至15级。

第六层:队伍中每有一名角色倒下,艾琳的攻击力提高40%。当队伍中剩余的存活人数不大于2时,艾琳的暴击率提升20%。


看看情况咋样,如果想看的人多补更角色故事和一部分语音吧。


我对于这个角色打定位是副C,在命座高之后可以打特化主C。考虑到她什么都会的可怕能力,一人担当一队是没什么问题的吧。单手剑和风系决定了她底子不强势,因此可以通过机制补强度。


看的人还挺多的嘛,那我尝试补一点角色故事之类的,写文技巧一般请大家多包涵哈。

角色语音

突破的感受•起:原来是用这种方式解决的吗?真是太厉害了!(DNA)

突破的感受•承:又学会了新的技能,以后可以跟琴团长切磋一下了吧?

突破的感受•转:这是…从哪里来的?…根本没有看清楚啊,木桩一下子就都碎掉了…

突破的感受•合:谢谢你的帮助!我现在学会了这么多的招式,已经迫不及待的想要试试啦!改天一起去同时打六只纯水精灵( 吧!

初次见面…:西风骑士团的见习骑士,艾琳,前来报到!这些句子我可是背的很熟的!

下雨的时候:下雨也不能耽误训练!我们走,打木桩去!

打雷的时候:是不是只要移动的比闪电快…就不会被雷劈到了啊?

刮大风了:风神的教诲…我明白了,应该这样,再这样!诶,没效果吗…?

天气晴朗:能见度不错,我连明冠峡那边的野猪都能看到呢!这要是一箭发出去…

喜欢的食物:满足沙拉可以弥补一天训练带来的劳累,尤其是里面的苹果!等打完这114个木桩,我们一起去猎鹿人吃晚饭吧!

讨厌的食物:琴团长说过,骑士不能挑食…

生日…:生日快乐!为了庆祝生日,今天就先不训练啦,带你去猎鹿人吃点好吃的去!

关于我们•师生:很多招式都是跟你和你的旅伴们学的,每次和你一起打木桩都有新的收获!

关于我们•训练:你刚刚说的是什么…洲际导弹?那是什么啊,我也想试着学一学!

想要分享的见闻•天降之箭:有一次我还在打木桩的时候,天上突然掉下来一根冰箭,一下子就把木桩都打碎了!

想要分享的见闻•羽球节:羽球节是蒙德一年一度的盛大节日,但是因为找不到人我就只能和自己打了……嗯?;你说一个人怎么打羽球?嘿嘿,到时候你就看到啦。

想要了解艾琳•其一:嗯?有什么事吗?

想要了解艾琳•其二:这把无锋剑是父亲在四岁生日的时候送给我的。因为手感很好所以也一直没舍得换掉。诶?你这是…这么贵重的礼物我可不能收下啦…

想要了解艾琳•其三:父亲一直很关照我,木桩的材料就是他找来的!额…是他委托你打来的?呃…那真是…挺谢谢你的…

想要了解艾琳•其四:丘丘人似乎很擅长编木桩嘛。那我可以抓一只过来帮我编——不行不行,城里怎么能放进来魔物呢,我到底在想什么啊。

想要了解艾琳•其五:能力越大,责任越大嘛。现在我可以帮助到更多的人,也越来越接近琴团长了吧。

关于琴:琴团长是我的榜样!风压剑就是我学会的第一个技巧,当初学的时候可费了不少功夫呢!现在虽然还比不上琴团长,但也可以这样……诶诶!你怎么飞出去了!没有受伤吧?

关于安柏:你说的是那个,一直在城里飞来飞去的女孩子吗?……什么?她也是正式骑士吗?那我改天一定跟她切磋切磋!

关于可莉:上次她路过的时候,我请她帮忙一起打木桩,她一下就全都解决了!虽然…很快被琴团长扛走了…可能是骑士团有任务吧。

关于班尼特:那种不顾自身疼痛打出的招式…嘶…看着就疼啊!还…还是算了吧…

关于菲谢尔:训练的时候有个伙伴也是挺不错的事情,至少不会那么无聊了吧!诶,你怎么用那种眼神看着我?

关于砂糖:只靠扔瓶子就把木桩解决了?看来真是不能小看呢。

关于阿贝多:看他战斗的时候真的是赏心悦目,岩元素的造物满地绽放…额,我自己肯定是学不来啦,搭个木桩都要半天时间呢。


故事

角色详情:

艾琳是西风骑士团的见习骑士,在大教堂的下面台阶上经常能够看到她刻苦训练的身影。

蒙德城的居民们经常能够在白天听到木桩碎裂的声音,那是艾琳在进行着每天的训练。

虽然仅仅是见习骑士,但是艾琳已经拥有了不俗的实力。尤其是她惊人的学习天赋,让她的技术以肉眼可见的速度长进。只要是被她看过一遍的技巧,她都能记下并再次使用出来。

角色故事一:

经常训练的艾琳是孤独的。每天她都会在蒙德城偏僻的角落,从日出一直训练到日落。

刚开始训练时的艾琳似乎饱受打击。每当她挂好了委托,那些经验丰富的冒险家总是很轻松地就完成了任务。随手一次挥剑,就同时打破了数个木桩,完成了艾琳苦思几天都没能解决的问题。这种情形总是让艾琳怀疑自己到底有没有成为骑士的天赋。

不过,每到第二天的早上,艾琳又会出现在城里,开始低头专注的编织起木桩来。

谁也不知道她晚上干什么去了。

角色故事二:

艾琳的父亲塞毓斯经常在【无意】间给她提供一些帮助。当然艾琳自己也清楚,这是他的父亲利用冒险家协会的职务之便来帮助她的。

作为冒险家的女儿,艾琳从小就被她的父亲鼓励去当一个冒险家,并尝试着完成一些简单的委托。这种锻炼可以说是让她受益匪浅。

艾琳永远记得那次简单的委托,就是帮忙送个物件,然而她没有注意到委托地点在龙脊雪山上。当诺艾尔找到艾琳的时候,她已经暴风雪里冻僵了,旁边零散着躺着几个被打倒的丘丘人。

艾琳在那次事故中弄丢了她的剑。当然,艾琳也没有再买一把,而是自己打造了一把扭扭歪歪,连刀锋都有点残破的剑。不过,如果曾经看到过艾琳在这把剑上附着的强大的元素力量之后,剑的外表也显得没那么重要了。

角色故事三:

艾琳每隔一段时间就会出门【修炼】一段时间。刚开始她的父亲还委托一位经验丰富的冒险家跟着,避免出现【被野猪追着打】这样的情况发生。艾琳自己挺反感被人一直盯着,但是自己始终摆脱不掉。

某次出游的时候,那位经验丰富的冒险家发现自己把艾琳跟丢了。于是他开启了元素视野,接下来的一幕让他极为震撼:四五种五彩斑斓的元素力量充斥了整个视野,影响着周围数百米的地方。地上则是各种颜色的脚印,完全没有规律。在经历了几个小时的地毯式搜索后,终于在树林里找到了调皮的小艾琳,而且还是在掏鸟蛋的时候摔下来才发现的。

从此之后,这位冒险家说什么也不再接委托了,而且经常闭门不出。偶尔在酒馆看到他,脸上也总是一副惊恐的神情。

角色故事四:

艾琳丝毫没有发觉到,自己的力量已经强大到了在城内首屈一指的地步。

能够熟练的掌握几十种元素技巧,可以在一把剑上同时附着三种元素,能够轻盈的爬上蒙德城的城楼……这些技能都是很多正式骑士都无法比拟的。

某次艾琳路过奔狼领,顺便把北风狼解决了,还斩了两段北风狼的尾巴作为留念。从此之后,艾琳【单杀】北风狼的事迹就在蒙德城里传开了。当然大多数人还是抱有怀疑的态度:几个资深的冒险家都无法击败的被北风狼,一个小姑娘怎么能搞定呢?

角色故事五:

艾琳在自己的努力下,终于成为了西风骑士团的正式骑士。在选拔考试中,艾琳似乎动都没动,靶子就碎掉了。

只有艾琳自己知道,这是凭借瞬间的强风来撕裂目标的技巧。这种技巧需要对风元素有着极高程度上的理解,并且要控制的丝毫不差才能达到预期的效果。

因为并没有看清楚击破的过程,选拔考试的评委们议论纷纷。不过,琴团长还是给了她一个肯定的答复,批准她成为蒙德新晋的侦察骑士。琴团长还在她耳边悄悄的说了一句话,艾琳此后一直把这句话作为自己的信条。

【只要把敌人都解决了,就不需要侦查了】


【蒙德技能指南】

整本书记录了所有艾琳见过的人,用过的技能。封面上画了一个完好的木桩。

“学习大家的长处才能提升自己嘛。想比力量而言,我更喜欢技巧”。

艾琳总是把每个技能的样貌都记下。前面是工工整整的字迹,记录着招式的步骤。然而越是往后翻,越能感觉到这本书记录的似乎不像是世界上存在的事物。

【向天空瞄准拉弓,仰角47度24分,瞄准星河西北数第13颗星星,即小鸭座的第5颗命星。心中抱有对风神的尊敬,才能让箭矢借助风的指引射向正确的位置。】

【在释放战技的时候一定要大声说出咒语,吾之风剑,撕裂汝之…… //经过大量的实践证明,是否说出咒语并不影响战技的强度……】

艾琳就是这样,以自己的理解,记录下凡人不可理喻的事情,然后再凭借着自己的努力尝试学会它。即使看起来根本无法学会,艾琳也会不断的去尝试。

每一页底下都画着一个被斩断的木桩,后面写了一个数字。部分数字已经涂抹的看不太清了。

神之眼:

艾琳的神之眼得到的时间很晚。这并不是因为没有神认可她的努力,而是认可她努力的神太多了,一直没有商议好要给她哪一个。

据某位不愿透露名字的骑兵队长所说,因为对给艾琳什么神之眼纠缠不清,为此一直摸鱼的风神还去跟其他几位神明打了一架。这场打斗的胜负不得而知,但是居民们都感受到那天的风刮的格外凶猛。

在那个万众瞩目的日子,艾琳在成为正式骑士的那一刻,在琴团长和善的目光注视下,告诉了她作为骑士的责任与担当。那一瞬间,神之眼出现了,出现的非常干脆。与她的榜样琴团长一样,是风属性的,包罗万象,容纳万物。

蒙德是风的城邦,艾琳也会追随优秀前辈的脚步继续努力。


更了三天,码4000多字可算是更完了。我现在身同感受mhy的文案策划是多么的不容易,得保质保量还得有效率,写的还比我好得多……还不一定有人看(┯_┯)

我写着写着也开始喜欢艾琳了。自己非常勤奋努力,训练的难度也不干人事,但是她还能坚持下来,还能虚心的向旅行者请教来提升自己。

欢迎各位讨论

似乎一个角色的内容就这些了吧,我要是还漏了啥欢迎在评论区指出来哦~


每日委托

艾琳,未来的骑士——

传送锚点:西风骑士团塔楼

火水风雷草冰岩……

与艾琳对话……

25级:怎么才能同时打碎这些木桩呢?

55级:怎么才能整出最好玩的活呢?

到了这个时候,旅行者的实力已经不容小视。对于艾琳这个看起来很简单的委托也当然不在话下。随着实力的提升,可供我们使用的方法也就越来越多,也没人认真的钻研打碎木桩的方法了。

艾琳看着旅行者们使用各种自己从未想过的方法,以不可思议的方式打碎了所有木桩。在自己的震惊之余,也难免感到一点点沮丧。

“难道我自己真的做不到那种程度吗?”

不管怎么说,艾琳还是尽自己最大的努力记录了下来。

然而,有些方法是记不下来的,因为旅行者都不知道自己是怎么打的……

渐渐的,没有旅行者愿意耐心的教会艾琳,而是想着怎么用好玩的方式完成委托,好赶紧拿走报酬。艾琳有时甚至没看到人,木桩自己就全都碎掉了,委托的报酬就算是白花了…

然而艾琳真的什么都没有学会吗?实则不然。艾琳勤奋的精神总能让她在训练中有所长进,对旅行者提供的招式多一点点理解。日复一日,艾琳的技艺也在逐渐精进。

“不…………见…者#&_¥…的……忠告”

……

当艾琳学成之时,即是提瓦特毁灭之日。


user avatar   austin-lin-92 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。

它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。

它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。

但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。

Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。

Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。

Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。

除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。

GTK

GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。

这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。

GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。

另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。

wxWidgets

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,

它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。

FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)

它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。

Duilib

是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。

相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。

Sciter

Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。

它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。

它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。

RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。

CEF

CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。

由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。

它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。

由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。

与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。

除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。

NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。

NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。

Electron

Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。

Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。

无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。

--------2022-02-25更新--------

这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。

类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):

       panel {   row {     checkBox(...)     row {       textField(...) // indented relatively to the checkbox above     }   } }     

但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。

除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:

强大的事件处理机制必不可少。

想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...

qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)

强大的异步处理机制必不可少

你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。

我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。

这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。

可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。

确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。

web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:

------------2022-02-27更新----------

用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。

实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。

当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?

所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?

你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。

你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)

目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。

虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...





  

相关话题

  如果你手机里的第15张照片是上辈子杀死你的东西,那么你的死因是什么? 
  如果学校非要你直播两小时,讲什么? 
  为什么Mr.quin既希望国产游戏能够进步又反感《原神》在国际上取得的成功?这和塞尔达有关吗? 
  《艾尔登法环》没有特别明确任务引导,是否影响游戏体验? 
  有什么一句话的「谜之笑点」的笑话? 
  求生之路1,2(L4D,L4D2)有哪些有趣的细节? 
  如果《王者荣耀》里的众英雄合租在一个公寓,会怎样? 
  如何评价《大逆转裁判2》? 
  玩手游时抽卡有什么好用的玄学? 
  假如你是绝顶强者,别人对你说「连柄像样的武器都没有,也装高手」,你会怎么做? 

前一个讨论
求拍女孩子和风景的ccd相机,有什么推荐?
下一个讨论
OPPO Find X5 值不值得无脑冲?





© 2024-05-10 - tinynew.org. All Rights Reserved.
© 2024-05-10 - tinynew.org. 保留所有权利