This IndexOutOfRangeException in GetBezierValue that only appears on some mobile devices is likely related to a threading issue or a race condition.
Potential Causes:
Threading conflicts - If you have threaded mesh generation or threaded animation enabled, there might be race conditions when accessing animation data across threads.
Device-specific timing issues - Some mobile devices may have different frame timing or garbage collection patterns that expose threading problems.
Solutions to try:
Disable threaded features:
- Go to
Edit > Preferences > Spine (or Spine Preferences asset)
- Under
Threading Defaults:
- Set
Threaded Mesh Generation to Off
- Set
Threaded Animation to Off
On individual components:
- Select your SkeletonAnimation GameObject
- In the Inspector, find the threading parameters
- Set both threading options to
Off instead of Use Global Setting
Update to latest version:
Since you're using version 4.1.0, consider updating to the latest spine-unity runtime (4.2.x), as threading and stability improvements have been made since then.
Additional considerations:
- Check if the crash occurs with specific animations or skeleton data
- Try testing with a simplified version of your skeleton/animations
- Verify that your
.skel or .json files aren't corrupted
If the issue persists after disabling threading, you may want to send a minimal reproduction project to contact@esotericsoftware.com with details about which mobile devices are affected and your exact runtime version.