终于。这个项目已经在过去的10个月里在酝酿中,我没有告诉任何人。我的个人大型项目。
我曾经开发过专业的实时金融图表软件,花了10年时间。近期我对Unity提供的图表解决方案并不满意。它们大多是业余爱好者制作的,过度炫酷、复杂或已过时。
我个人非常喜欢苹果公司的图表呈现方式。Swift Charts是非常细心的,有着优良的默认设置、出色的API和极度灵活性,所有这些都基于一个概念上合理的架构。Unity至今缺乏如此的图表解决方案。
直到现在。以下是Chart Guru——几乎100%兼容Swift Charts的实现,包括默认设置、外观和感觉、API以及最后一个修饰符和重载。这个是企业级图表呈现的工具。
整个包都是高度优化的,GC几乎为零,支持Canvas、IMGUI和UI工具包。在BIRP、URP和HDRP中都可用。有超过40个样例场景。许多数据源也随附,包括Yahoo财经、Json/CSV等。
最困难的部分不是我预期的渲染部分。绘制条形图、折线图、饼图、轴、标签等确实需要大量工作,但至少是直接的工作。困难的是尝试将Swift Charts的感觉带入Unity,而不是简单地制作一个奇怪的C#模仿Swift。
Swift Charts高度依赖于SwiftUI。您可以获得布局、修饰符、动画行为、视图组合、可访问性等所有内容作为生态系统的一部分。Unity是一个非常不同的生物:组件、序列化字段、编辑工具、uGUI、UI工具包、渲染管道、播放模式、GC峰值。因此,“平衡”变成了很多判断。什么应该直接映射?什么应该是Unity原生的?什么是SwiftUI的奇迹,不能在这里实现?
Swift导入器可能是最大的陷阱。我的目标是将Swift Charts-ish片段粘贴到Chart Guru C#中。这意味着理解诸如.chartXAxis、.foregroundStyle、.value、AxisMarks、渐变、日期、闭包、嵌套修饰符、顺序、默认值等。显然,这不是一个完整的Swift编译器,但它也很快就不再是“只是某些正则表达式”。
性能也一直是战斗的焦点。图表看起来很简单,直到它们是实时更新的。然后,每个轴标记、标签、图例项、工具提示、堆叠布局、转换和数据标签动画都变成一个可能的小分配。最终的大部分工作都变成了缓冲区、池化、稳定标记更新、缓存格式化字符串以及测试,以确保已加热的运行时路径保持在零管理分配上。
我非常满意结果。如果你认为这听起来像是一个有用的工具,检查一下Chart Guru在Asset Store上 :-)期待所有反馈和建议!
评论 (0)