LogoArcartX Doc
Shimmer语法教学

导论

Shimmer脚本系统

最好的作者,是那羞于成为作家的人

Shimmer脚本系统————轻量级的UI和动画脚本解决方案

Shimmer是什么?

我在开发UI和动作控制器的过程中,曾尝试过很多方案,比如JS、Jython(Python解释器嵌入JAVA)、Molang等。

然而,以上方案更像是将"运算"嵌入到我们的整体运行中,或许是我钻研不精,没发掘到以上方式的最优方案来完成类似"嵌入"的操作。

其次,并不是每个服主都精通JS等脚本语言,有时候一两行表达式就能实现的功能,没必要为此去专门学习一门语言。所以我希望能做出一个半天内就能上手的方案。

同时,考虑到有些服主已经具备脚本编程基础,我们的语法设计也照顾到了这点,让有基础的使用者能更快上手。

最后,Shimmer这个项目诞生了,它翻译为"微光",就像微光一样,不需要太强烈的光源,但能够恰到好处地完成任务。

设计理念

语法平衡

参考了js、kotlin、python的优点,努力实现"刚刚好"的语法平衡

🎯

易用性

  • 够用的语法糖:该简化的地方适度简化
  • 直观的表达:避免过度语法糖带来的理解负担
  • 保持精简:遵循"KISS"原则,减少学习压力
🎮

定位明确

Shimmer从设计之初就定位为"为载体服务"的嵌入式脚本语言(针对特定场景优化的领域特定语言(DSL)),而非独立运行的通用语言

"载体"的概念

Shimmer的核心设计围绕着"载体"概念展开,这是理解整个系统的关键

  • 在UI或动画这些场景里,很多东西都是有层级关系的。
  • 比如一个UI界面(载体),里面有几个面板(子载体),面板里又有一些按钮(孙载体)。
  • Shimmer上下文的设计是围绕这种层级关系,在上下关系中,可以相互访问、调用。

载体能力

🔧

属性定义

可以定义载体的各种属性,如组件标题、动作节点速度等

🎮

行为控制

支持定义外部行为(如点击事件)和内部行为

动画系统

内置14+种动画曲线,包括:

  • 线性插值
  • 贝塞尔曲线
  • 圆周运动
  • ...

Shimmer将持续更新完善,欢迎在使用过程中提供建议和反馈

On this page