Hi,We are updating our 3.8 spine game assets to 4.2. We found that some float values loaded in runtime have small difference between two version.
Let's say in our realtime game battle, we have attack animations for character, and we create a keyframe on event timeline which will to trigger attack game logic, we will get the muzzle position from this time event in which muzzle is a specficed bone. So small frame value difference may impact real gameplay damage value.
So at best case, we hope no position change after upgrade spine version. But We compare the animation translation timeline data loaded from method ReadAnimation in SkeletonBinary.cs.
these are two output info(z is keyframe time, serialized using Newtownsoft.json ):
4.2
[
{
"animationName": "Attack",
"onAttackTime": 0.433333337,
"muzzleName": "F_Muzzle",
"frameInfo": [
{
"x": 3.12239981,
"y": -1.67009914,
"z": 0
},
{
"x": 1,
"y": 1,
"z": 0
},
{
"x": 0,
"y": 0,
"z": 0
}
]
}
]
3.8
[
{
"animationName": "Attack",
"onAttackTime": 0.433333367,
"muzzleName": "F_Muzzle",
"frameInfo": [
{
"x": 3.12239981,
"y": -1.67009985,
"z": 0
}
]
}
]
You can see that onAttackTime and frame zero's y is different after the 7th decimal place.
I review the runtime Code, It looks no precision difference on import animation data, So I have to suspect the editor export logic has changed( which is blackbox for me)
Do you know about this case, or is there any way can avoid this export bias from two unity version?
I can send you our project and export for further investgation.
thanks for any helps.