记录使用插件支持公式表达的一次尝试
miside吧
全部回复
仅看楼主
level 13
惠更斯X 楼主
众所周知,控制台米塔拥有操纵房间,切换亮度等等的能力;那么我们可以与她进行一番“友好”交流以支持一些自定义指令[吐舌],就此发生了如下对话:控制台米塔:“在你尝试修改前,我希望知道你认为真理有几个版本?”
答:“理论上一个,实践中三个:您说的版本、控制台打印的版本、以及我们深夜小声讨论的版本——但请放心,我只订阅前两个。”于是,我们便可以使用say+空格+内容的方式与AI对话
2026年07月07日 14点07分 1
level 13
惠更斯X 楼主
在复制了一份对话副本后,我们可以通过展示3D字体的方式将AI的回复列出来;为了尝试实现最接近原生的对话展示方式,我们可以定义以下规则:每一次遇到一个逗号,句号。问号?感叹号!时截断,每次都只展示截断出来的一小部分,但当我们遇到类似于公式的情况时这一套就看起来很奇怪了,甚至可以超过一整个屏幕。
2026年07月07日 14点07分 2
level 13
惠更斯X 楼主
如2楼展示的效果,这种格式被称作LaTeX,目前的大模型对于公式的输出大部分都是以这种格式来展示的,但渲染依靠的是一套单独的逻辑。在上图中,大模型输出的结果是
$$e^{i\pi} + 1 = 0$$
$$x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$$
$$\int_{-\infty}^{\infty} e^{-x^2}
\mathrm{d}x = \sqrt{\pi}$$
$$\sum_{n=1}^{\infty} \frac{1}{n^2} =
\frac{\pi^2}{6}$$
$$i\hbar \frac{\partial}{\partial t}
\Psi(\mathbf{r},t) = \hat{H} \Psi(\mathbf{r},t)$$这五个公式
2026年07月07日 14点07分 3
level 12
大佬
2026年07月07日 14点07分 4
不敢当不敢当[鼠2]
2026年07月07日 14点07分
level 13
惠更斯X 楼主
为此,我们需要寻找一套支持我们渲染这些LaTeX公式的插件,先滤清我们想要怎样实现这一部分逻辑:通过类似于latex(不一定是这个,我们需要选择一个轻量化的mit或者apache2.0开源协议的工具,这两种开源协议是最常见的宽松开源协议,代表可以尽可能的避免版权风险)方式生成一个除公式外透明图片,公式短的话占据一个字,公式长的话占据二到三个字长度,特别长的话占据四个字长度。通过我们现有的逻辑实现类似于游戏原生的展示效果,为此我们可以先提取出来关键的逻辑创建一个独立的测试小项目成功后再整合进主项目中。这是GPT给我们的建议:
2026年07月07日 14点07分 5
level 13
惠更斯X 楼主
可以简单的验证一下这些插件的开源协议是否是mit,在这之后就可以交给GPT生成代码了,但GPT会需要你提供一些unity explorer截图或者其他的内容来进行分析,对于这部分可以参考BV136s6zyEb7这一个系列的il2cpp游戏mod教程
2026年07月07日 14点07分 6
level 13
惠更斯X 楼主
为了确保兼容,我们最好不要一开始就尝试最新的版本,使用稳定版足以实现我们的功能而且可以更顺利。最后,我们确认使用
<ItemGroup>
<PackageReference Include="CSharpMath.SkiaSharp" Version="0.5.1" />
<PackageReference Include="SkiaSharp" Version="2.88.9" />
<PackageReference Include="SkiaSharp.NativeAssets.Win32" Version="2.88.9" />
</ItemGroup>
2026年07月07日 14点07分 7
level 13
惠更斯X 楼主
对于插件本身,我们准备使用.net 6.0,但创建类库时会显示最低8.0,这里我们正常创建8.0,进入后卸载项目手动把第一行改成net6.0即可;因为GPT这里表示bepinex框架未必可以正常的加载高版本.net 8.0语法
2026年07月07日 14点07分 8
level 13
惠更斯X 楼主
第一次代码生成的运行结果,可以看到主要有以下的几个问题:白底和公式/文字没有对其,字体不对
2026年07月07日 14点07分 9
level 13
惠更斯X 楼主
游戏中自带的样式白底是比文字大一些的,让GPT试着把白底放大一点是否可以解决问题呢?看起来效果不佳,虽然确实可以包起来但看起来很违和
2026年07月07日 15点07分 10
level 13
惠更斯X 楼主
那么换一种方式,让GPT试着修改文字和白底大小相同但是白底加粗一些;这次公式看起来好多了,接下来让对于文字也如法炮制,同样的修改方式就可以贴合文字边缘了
2026年07月07日 15点07分 11
level 13
惠更斯X 楼主
接下来让字体再切换回游戏原生的字体,可以看到切换后字体变小了,我们的公式位置看起来就有一点偏下和偏大了。为此,我们需要让公式大小根据文字本身大小进行调整,依旧是1-4个文字大小预留位置,根据公式长度动态分配。
2026年07月07日 15点07分 12
level 13
惠更斯X 楼主
最后我们可以试试让模型重新说一遍那一长串LaTeX公式看看是否还会列出一长串超出屏幕的式子了,这里为了控制变量,让模型列出一模一样的式子:
2026年07月07日 15点07分 14
level 13
惠更斯X 楼主
当然,掉落的特效也是依然存在的,可以像原生文字一样展示出来
2026年07月07日 15点07分 15
level 13
惠更斯X 楼主
补充一条:这里我们公式解析的本质是从模型输出里识别 $...$、$$...$$、\(...\)、\[...\]这四种包裹内容的标签,然后根据标签里面的内容渲染出来图片再列出来
2026年07月07日 15点07分 16
1 2 尾页