Phase 6 updates

Phase 6 · Slice 42 ·

A TextMeshPro build per project version

  • TextMeshPro 3.2 (Unity 2023.2 and later) made the first UVs Vector4s (TMP_MeshInfo.uvs0, TMP_Vertex.uv); scripts written for earlier versions say Vector2[] and don't compile (or run) against the other. Unity.TextMeshPro's sources name the type through one alias (TMP_Uv.cs); Unity.TextMeshPro.Legacy builds the same sources with TMP_LEGACY_UVS (and TMP_Vertex.uv4), under the same assembly name, into tmp-legacy beside the runtime.
  • A project's version: its manifest's com.unity.textmeshpro, else uGUI 2.0 (TextMeshPro inside: the newer), else its Unity version (before 2023.2: the older). Opening the project, before anything uses TextMeshPro, loads the older build into the runtime's context when it's needed, and the project's scripts compile against the build loaded. A process that already has the other build warns (the editor switching projects).
  • Packaging: the script build records the TextMeshPro build its scripts compiled against (Library/Tassix/Scripts/textmeshpro.txt); a NativeAOT package links that one (TassixTextMeshPro=legacy swaps the reference).
  • Checked: an e2e test (a TextMeshPro 3.0 copy of the Unity sample gets Vector2[] uvs0 and its script compiles and runs, the Unity 6 sample keeps Vector4[]); BasketBall compiles (its TextMesh Pro example scripts) and plays, and packages with NativeAOT linking the older build.
  • Next: drag-reordering's animation and drop marker; whatever the corpus asks for next.