在表达式输入框中加入富文本样式代码支持(或转义字符支持)



  • 正在开发一个游戏内聊天和指令的系统,然后我想实现同一个文本中存在多种不同颜色的文字,那么显然是需要用到富文本功能的;
    富文本实际上是用CSS样式代码实现的文字样式更改,其格式一般为<span style="xxxxx:xxxxx;">文本内容</span>等。
    这个代码直接写在场景或者对话框中还比较好用,但却不能写在表达式输入框中;原因是这个代码中存在双引号,会被引擎识别为字符串结束标志。
    如果使用转义字符“\”,那么确实可以输入进去,但并不能被正确读取和转义:
    undefined

    若直接设置对象的字体样式,则所有文本都会被更改;文本.text表达式只能返回字符串,而不带有样式信息。

    此外,replace()等字符串处理表达式也都不支持使用反斜杠作为查找的字符串目标,会直接提示未识别。
    目前我的解决方法比较暴力,直接在场景区域外面建立一个特定的文本,用于存放样式信息;然后通过replace()替换其中的text字段,这里的替换目标已经变成text了所以可以成功。
    undefined

    当然我也能想到更多的方法来解决这个问题,例如通过数组或多个文本实例内容的组合等;但这样实现终究不是长远之计,即使这个功能的需求非常少,我也觉得有加入的必要(而且“<”和“>”符号似乎也不能完全正常运作,经常会发现文本中丢失后续内容的情况



  • 这个我以前做过,建一个颜色字典, 颜色名:颜色编码
    然后创建一个动作组,传入需要上色的文本和颜色名
    在动作组里对格式进行拼接后设置返回值即可



  • @其余 这个我也想过,但是还是有点麻烦,而且有时候想要多个样式的话拼接就更复杂了😂目前来说我的需求还不是很多,暂时先用着,其实最麻烦的是这俩符号(<>)不能正常使用,当时我以为是我写错了排查了半天,最后只能放弃使用


登录后回复