开源游戏引擎Godot3.2

  • 开源游戏引擎Godot3.2近期更新,支持BBCode富文本

开源游戏引擎Godot3.2近期更新,支持BBCode富文本


此PR添加了一种支持实时文本效果的新ItemFX类型RichTextLabel。这还增加了使用自定义RichTextEffect扩展添加附加bbcode命令的功能(灵感来自于#23135)。

当/如果它被批准为一项新功能,我将需要编写更多文档。以下是这两个功能的简要介绍:

您可以在此处下载此提交的示例项目:RichTextEffects.zip。这是体验通过此提交所做的更改的最佳方法,但是下面链接了一些gfycat示例。

新的实时文本效果
实时特效将更新并绘制每一帧。如果在bbcode字符串中找到ItemFX键入的效果,它将自动启用set_process。这意味着RichTextLabel如果使用了动态文本效果,则仅需要处理每个帧。


  1. 文本将根据其相对X位置在Y轴上上下波动。
    amp= 波的振幅。
    freq= 波的频率。

  2. 龙卷风
    [center]Here’s a look at the [tornado radius=5 freq=5]tornado[/tornado] text effect.[/center]
    文本将以循环方式移动。每个字符在圆周上的位置将由其x位置确定,从而产生有趣的波纹效果。
    radius= 控制其偏移的圆的半径。
    freq= 整圈运动的频率。

  3. 抖动
    [center]Here’s a look at the [shake rate=15 level=10]shake[/shake] text effect.[/center]
    rate= 文字重新定位的频率
    level= 文字与原点的偏移量

  4. 褪色
    [center]Here’s a look at the [fade start=4 length=14]fade text effect…[/fade][/center]
    根据起始位置和长度值淡出文本。
    start=起始位置衰减。相对于淡入命令的插入位置。
    length=应该淡出多少个字符。(粗略的衰减控制。)

  5. 彩虹[center]Here’s a look at the [rainbow freq=0.2]rainbow[/rainbow] text effect.[/center]
    根据x位置和时间为文本提供彩虹色分配。
    freq= 每秒完整的彩虹周期数。
    sat= 彩虹的饱和度。
    val= 彩虹的值(例如亮度)。
    自定义BBCode和文本效果
    2018-11-11 16-44-13的屏幕截图

现在,您可以扩展RichTextEffect资源类型以创建自己的自定义BBCode。您可以查看示例项目以获取更多详细信息,但是下面是一个粗糙的示例。

扩展:
您首先要扩展RichTextEffect资源类型。tool如果希望这些自定义效果在编辑器中运行,请在gdscript文件中添加前缀。RichTextLabel不需要附加脚本,也不需要在tool模式下运行。

以下是一些自定义效果的示例:

鬼影
tool extends RichTextEffect

var bbcode = “ghost”

func _process_custom_fx(char_fx):

var speed = char_fx.get_or("freq", 5.0)
var span = char_fx.get_or("span", 10.0)var alpha = sin(char_fx.elapsed_time * speed + (char_fx.absolute_index / span)) * 0.5 + 0.5
char_fx.color.a = alpha
return true;
  1. 脉冲

tool extends RichTextEffect

var bbcode = “pulse”

func _process_custom_fx(char_fx):
var color = char_fx.get_or(“color”, char_fx.color)
var height = char_fx.get_or(“height”, 0.0)
var freq = char_fx.get_or(“freq”, 2.0)

var sinedTime = (sin(char_fx.elapsed_time * freq) + 1.0) / 2.0
var y_off = sinedTime * height
color.a = 1.0
char_fx.color = char_fx.color.linear_interpolate(color, sinedTime)
char_fx.offset = Vector2(0, -1) * y_off
return true
  1. 矩阵

tool extends RichTextEffect

var bbcode = “matrix”

func _process_custom_fx(char_fx):
var clear_time = char_fx.get_or(“clean”, 2.0)
var dirty_time = char_fx.get_or(“dirty”, 1.0)
var text_span = char_fx.get_or(“span”, 50)

var value = char_fx.charactervar matrix_time = fmod(char_fx.elapsed_time + (char_fx.absolute_index / float(text_span)), \clear_time + dirty_time)matrix_time = 0.0 if matrix_time < clear_time else \(matrix_time - clear_time)/dirty_timeif( value >= 65 && value < 126 && matrix_time > 0.0 ):value -= 65value = value + int((1 * matrix_time * (126-65)))value %= (126 - 65)value += 65
char_fx.character = value
return true

您只需扩展一个名为named的函数_process_custom_fx(char_fx)。(可选)您还可以通过添加成员名称bbcode来提供自定义bbcode标识符。该代码将自动检查bbcode,或者仅使用文件名来确定bbcode应该是什么。

_process_custom_fx。
这是每种效果的逻辑发生的地方,在文本渲染的绘制阶段每个字符调用一次。这传入了一个CharFXTransform对象,该对象包含一些控制如何呈现关联字符的变量。第一个是identity,它将指定要处理的自定义效果。您应该将其用于代码流控制。relative_index将告诉您作为索引位于给定自定义效果块中的距离。absolute_index会告诉您作为索引在整个文本中的距离。elapsed_time是文本效果已运行的总时间。visible会告诉您该字符是否可见,还可以使您隐藏文本的给定部分。offset是相对于给定字符在正常情况下应呈现的位置的偏移位置。color是给定字符的颜色。还有env一个分配给给定自定义效果的变量字典(例如,查看上面的代码)。关于此函数要注意的最后一件事是,必须返回一个布尔true值以验证效果是否正确处理。这样,如果呈现给定角色存在问题,它将完全退出呈现自定义效果,直到用户修复其自定义效果逻辑中出现的任何错误为止。

这将添加一些新的bbcode命令,其用法如下:
[center][ghost]This is a custom [matrix]effect[/matrix][/ghost] made in [pulse freq=5.0 height=2.0][pulse color=#00FFAA freq=2.0]GDScript[/pulse][/pulse].[/center]

开源游戏引擎Godot3.2重大更新,支持更华丽的动态富文本特效相关推荐

  1. 开源游戏引擎_Hatchit:开源游戏引擎

    开源游戏引擎 通过视频游戏,越来越多的学生正在学习开源世界. 像FreeCiv和Minetest这样的开源游戏邀请年轻的玩家来研究源代码,而像SpigotMC这样的项目则使他们能够编写插件来扩展自己喜 ...

  2. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭. 2.我们的主要用户群是各个相关的企 ...

  3. 两大开源游戏引擎Cocos2d-x及OGEngine对比分析

    在近期的全球移动开发者大会上,触控发布了Cocos 3D引擎:而在差不多同时间,以安卓为主的OGEngine也发布了新版本,并宣布将支持跨平台. Cocos2d-x和OGEngine都是当前比较受开发 ...

  4. 五大开源游戏引擎介绍

    本文总结分享了五个开源游戏引擎.对游戏编程初哥来说,选择一个好的游戏引擎是一个很头疼的事.本文介绍的五个游戏引擎不仅被证明是可靠的,而且全部开放源码. AD:   对游戏编程初哥来说,选择一个好的游戏 ...

  5. HTML5 开源游戏引擎 LayaAir

    LayaAir是HTML5开源引擎 提供Canvas和Webgl同时渲染,如果Webgl不可用,则可自动切换到Canvas模式.引擎为高性能游戏设计,支持AS,TS,JS三种语言开发,一套代码三端齐发 ...

  6. 最常见的开源游戏引擎

    开源即开放源代码(Open Source),游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞.物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等.无论是角 ...

  7. 最常用的开源游戏引擎

    开源即开放原代码(Open Source),游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞.物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等.无论是角 ...

  8. 最常见的开源游戏引擎_拔剑-浆糊的传说_新浪博客

    最常见的开源游戏引擎 http://www.open-open.com/lib/view/open1349767893947.html 开源即开放源代码(Open Source),游戏引擎好比赛车的引 ...

  9. FW:十大开源游戏引擎深入比较_拔剑-浆糊的传说_新浪博客

    http://book.2cto.com/201301/15170.html 在国内外,业界盛传有十大开源游戏引擎,分别是OGRE.Irrlicht.Panda3D.Crystal Space.jME ...

最新文章

  1. 十四周三次课、MySQL主从配置
  2. 二叉树和栈的基本操作
  3. 本地连接虚拟机 Oracle数据库 报ORA-12541:TNS:no listener
  4. Linux Qt打包发布应用程序
  5. 微信分享JS-SDK示例页面
  6. ICLR2020 双盲审稿资质雪崩:47%审稿人在领域内没发过论文,8分论文你也能审!...
  7. 20165212四则运算2
  8. create-react-app 创建react应用环境变量(env)配置
  9. bin转txt工具_Shell笔记之常用工具
  10. 2022计算机毕业设计如何选题?
  11. 嵌入式系统开发必读经典书目
  12. Unity DOTS Burst 运行分析
  13. SQL PLUS命令使用大全(转,特有用)
  14. 文献记录(part109)--Self-Representation Based Unsupervised Exemplar Selection in a Union of Subspaces
  15. essp8266------mqtt服务器搭建
  16. 电脑坐姿:经常使用电脑的人士注意了!
  17. flutter限制数字输入
  18. 传统、VHD、VHDX性能对比测试(转帖)
  19. 港科百创 | 极目生物宣布引进FDA批准干眼治疗器械大中华区、韩国及东盟十国独家权益...
  20. IOS马甲包(诚招大量开发)

热门文章

  1. android 多 webview,Android webview多窗口
  2. 以三维地图和倾斜摄影为基础的CIM托底,以三维视频融合或投影融合为核心的时空克隆为引擎,以混合架构模式构建的魔镜平台,将成为元宇宙的主流 点卯+魔镜系列
  3. 现场升级方案:LPC1788采用U盘方式进行程序IAP升级功能的实现
  4. 玉米关联群体:155、368、527 自交系群体简介(Yan Jianbing,2010、2013)
  5. 盒子模型和怪异盒子模型
  6. 标自然段的序号格式_自然段标序号是什么意思
  7. KALDI工具箱运行TIMIT语料库库实例教程
  8. 【手把手】教你玩转SpringCloud Alibaba之Nacos
  9. 异化之地未能成功连接服务器,异化之地特殊房触发NPC事件选项攻略
  10. unity3d 零散记录