Forums | Documentation | GitHub

Getting Started

Getting Started Documentation in github


Spine-Unity 3.6 runtime unitypackage:
Compatible with Spine 3.6.x and Unity 5.6-2017.2 (Last updated: UTC - 2017 December 11)
For the changelog, see 3.6/CHANGELOG.md

Known Issues:

  • You cannot drag SkeletonData Assets into the Hierarchy view if it is empty. You will need to drag them into Scene View, or create an empty GameObject before dragging into Hierarchy view.

Unity Limitations:

  • Unity's physics components do not support dynamically assigned vertices so they cannot be used to mirror bone-weighted and deformed BoundingBoxAttachments. However, BoundingBoxAttachments' internal vertex data at runtime is still being deform correctly and can be used to perform hit detection with your own code.
  • UnityEngine.UI.MaskableGraphic does not support using more than one texture, so uses of SkeletonGraphic are limited to skeletons with only one atlas page/texture. At the cost of masking, an experimental version of SkeletonGraphic which splits it into multiple UI objects can be found here: http://esotericsoftware.com/files/runtimes/unity/spine-unity-experimental-SkeletonGraphicMultiObject.unitypackage
  • Spine animations are not imported as Unity.AnimationClip objects. Unity uses a different curve scheme and the set of features do not overlap well with Spine's features. Instead, Spine-Unity animates using core C# Spine.Animation objects which retain all of Spine's animation features. This means a few conveniences may be absent, such as playing back animations in edit mode using the Animation panel.
  • Unity does not recognize arbitrary file types, so atlases need to be exported as .atlas.txt. Likewise, binary files need to be exported as .skel.bytes. For more information on importing Spine assets, see the documentation section on Getting Started


  • Runtimes cannot load exported binary file versions that are newer or older than the version it supports.
  • Json exports are more stable and have better chances of being compatible with future versions, but may still break.
  • If you want to avoid incompatibility issues with a set runtime version, you can choose a Spine editor version that matches that runtime specifically. This can be done in Spine's Settings... window.
    For more information, see this forum topic.

Fixed Bugs

  • (2017 Nov 13) Fixed the Drag-and-Drop cursor tooltip "Create Spine GameObject" not showing up.
  • (2017 Oct 31) Fixed a bug where repacking the same attachments twice would cause exceptions.
  • (2017 Oct 31) Fixed a bug where AnimationState couldn't reset certain bone positions to setup pose when combining mix durations with zero-duration/immediate animation transitions.
  • (2017 Oct 31) Fixed a bug where the default SkeletonGraphic shader wouldn't correctly apply the tint alpha.
  • (2017 Oct 21) Fixed typo in SpriteVertexLighting.cginc. Choose "reimport" to refresh the shader compilation from cginc.
  • (2017 Oct 20) Fixed Unity 2017.2 playModeStateChange API change.
  • (2017 Oct 20) Fixed SkeletonGraphic TintBlack shader not using the correct vertex color alpha source.
  • (2017 Oct 11) Fixed a bug where Deform animation timelines would blend from zeroes.
  • (2017 Sep 30) Fixed a bug where the Tint and Tint Black shaders were ignoring the overall opacity/alpha from vertex colors and the Material property.
  • (2017 Sep 28) Fixed a bug where PathConstraints were calculating incorrect spacing between bones when constraining multiple bones.
  • (2017 Aug 23) Fixed a bug where destroying a GameObject with SlotBlendModes component would cause a NullReferenceException.
  • (2017 Aug 23) Fixed AnimationState not mixing out properly in certain combinations of zero and nonzero mix durations.
  • (2017 Jul 21) Fixed Triangulator causing incorrect ClippingAttachment clipping behavior.
  • (2017 Jul 11) Fixed sample AtlasRegionAttacher script not checking for null returned atlas.
  • (2017 Jul 11) Fixed SkeletonJson not handling empty end slots on ClippingAttachments.
  • (2017 Jul 05) Fixed BoundingBoxFollower not taking the active skin into account.
  • (2017 Jun 28) Fixed SkeletonRagdoll2D not working in some cases.
  • (2017 Jun 28) Disabled hierarchy icons in play mode to skip unnecessarily heavy processing when GameObjects where rearranged/created/destroyed rapidly.
  • (2017 Jun 28) Fixed a bug where the SkeletonAnimator inspector would not work.
  • (2017 Jun 26) Fixed a bug where SkeletonDataAssets would report missing texture sources when TK2D is enabled.
  • (2017 Jun 24) Fixed a bug where AnimationState was dip-compensating between tracks.
  • (2017 Jun 22) Fixed a bug where TK2D had missing AttachmentLoader interface methods.
  • (2017 Jun 22) Fixed a bug where unweighted meshes with DeformTimelines that have no keys at the start of the timeline would shrink during mixing.
  • (2017 Jun 9) Fixed a bug where SkeletonAnimator would throw a KeyNotFoundException when its controller used a non-dummy AnimationClip.
  • (2017 Jun 7) Handled an obsolete Handles.DotCap call for Unity 5.6 and higher.
  • (2017 Jun 1) Fixed a bug where the "Spine/Skeleton Tint Black" shader ignored the texture alpha channel.
  • (2017 May 29) Fixed a bug where SpineEditorUtilities would attempt to check and import external empty or un-findable text assets.
  • (2017 May 6) Fixed a bug where example scripts used code for older Unity instead of newer.
  • (2017 Apr 26) Fixed a bug where cloning VertexAttachments was copying the wrong array.
  • (2017 Apr 14) Fixed a bug where cloning MeshAttachments and BoundingBoxAttachments returned the original rather than the clone.
  • (2017 Mar 30) Fixed a bug where cloning MeshAttachments would throw exceptions if data was exported without nonessential data, such as when repacking skins.
  • (2017 Mar 30) Fixed a bug where repacking skins multiple times would cause rotated source atlas regions to have the incorrect rotation.
  • (2017 Mar 16) Fixed a bug where non-Spine jsons were reporting version errors.
  • (2017 Mar 16) Fixed a bug where older versions of Unity wouldn't compile because of the use of DelayedTextField.
  • (2017 Mar 16) Fixed a possible leak when destroying SkeletonRenderers (if Unity requires manual destroy on Mesh objects).
  • (2017 Feb 18) Fixed a bug where the SkeletonDataAsset inspector would not load despite having a complete and correct TK2D Sprite Collection. This did not affect builds.
  • (2017 Feb 18) Fixed a bug where AnimationState wouldn't raise events that were queued from within event callbacks.
  • (2017 Feb 15) Fixed a bug causing a BoudingBoxFollower's generated PolygonCollider2Ds to not be cleared correctly.

Important notes when upgrading

  • (2017 October 16) The old AttachmentTools static class called SpriteAtlasAttachmentExtensions was renamed AtlasUtilities. Any methods that were called as statics rather than extension methods must now refer to that new name. Extension method calls will not need any code changes.
  • (2017 June 11) SkeletonGraphic now allows you to override the mainTexture with a repacked texture using SkeletonGraphic.OverrideTexture.
  • (2017 May 6) Sprite Shaders: When updating shaders from any source, especially ones that use cginc files, it may be necessary to restart Unity or right-click then choose Reimport All in the project panel so the cginc files are properly reimported. https://forum.unity3d.com/threads/is-there-a-way-to-force-shaders-to-update-when-cginc-files-are-updated.336041/
  • (2017 May 6) Sprite Shaders: Some files from the older version of the Sprite shaders were removed. delete the whole spine-unity/Modules/Shaders/Sprite subfolder before upgrading to ensure no old unused files are left behind.
  • (2017 May 6) Sprite Shaders: Updated to the latest source version. Some serialization may have changed. If you used these shaders, do go over your Material assets and make sure they have the correct settings: https://github.com/traggett/UnitySpriteShaders
  • (2017 Mar 30) You now have the option to disable multi-mixing to get rid of the dipping issue. This can be set with the AnimationState.MultipleMixing bool property. In 3.5, it is enabled by default so updating your runtime will not result in unexpected changes in animation behavior. You can change the code so AnimationState sets the value to false by default to remove unwanted dipping at the cost of multiple mixing. This default may change in 3.6.
  • (2017 Jan 24) Based on Unity Technology recommendations, whenever SkeletonUtility (or BoundingBoxFollower) generates PolygonColliders based on Spine Bounding Boxes, it will also add a Kinematic Rigidbody2D to that object. This means each of those GameObjects are their own immutable box2D body and cost significantly less computationally to move/animate.
  • (2016 Nov 28) Some UnityEngine.Sprite.ToRegion methods have been moved to consolidate code. You will need to add using Spine.Unity.Modules.AttachmentTools to your using directives in your code.
  • (2016 Oct 23) Spine 3.5 The context menu for creating scene objects from the Project view/asset menu is disabled by default because it is not the recommended place for scene objects. You can now instantiate your skeletons by dragging and dropping the SkeletonData asset into the scene view, similar to Unity Sprites. See this topic for more details: http://esotericsoftware.com/forum/New-Feature-Drag-and-Drop-to-instantiate-6789
  • (2016 Jul 13) Spine 3.4 There were no base runtime feature and serialization changes between 3.3 and 3.4. There is no need to re-export your binaries and jsons if they were exported with Spine 3.3.
  • (2016 Apr) The sample implementation module called VertexHelperSpineMeshGenerator has been removed. You can find the code here: VertexHelperSpineMeshGenerator.cs
  • (2016 Apr) The .unitypackage was exported with Text Serialization to improve the example scenes compatibility with version controlled projects (and Unity Collaborate).
  • (2016 Apr) Spine 3.3 involved some refactoring. If you are upgrading your runtime, it is recommended that you delete your spine-csharp folder before importing the new files. Some redundant/unused files like FfdAttachment.cs and WeightedMeshAttachment.cs may be left over and cause errors. (Because none of the spine-csharp files are Unity components, deleting or replacing it will not break any of your scenes or prefabs.)
  • (2016 Apr) Most older jsons (especially with meshes) are not compatible with Spine 3.3 and higher. You will need to re-export your skeletons even if you used json. As usual, skeleton binaries are incompatible across Spine editor versions.
  • (2016 Mar) Spine classes were moved into the Spine.Unity namespace. You will need to update your scripts that use Spine classes. Add using Spine.Unity and/or using Spine.Unity.Modules. Read more here: http://esotericsoftware.com/forum/Spine-Unity-namespaces-6025
  • (2016 Mar) Old sample binary files were removed.
  • (2016 Mar) SharpJson.cs was merged into Json.cs. Please delete SharpJson.cs when upgrading.

Older Versions

Spine-Unity 3.0 for Unity 4.6:
(Last updated: UTC - 2017 May 9)

Spine-Unity 3.5 for Unity 5.4-2017.1:
(Last updated: UTC - 2017 June 18)

Spine-Unity 3.6 for Unity 5.4:
(Last updated: UTC - 2017 June 20)

Installing in a new project

  1. Create an empty Unity project.
  2. Import the spine-unity.unitypackage you downloaded. (double-clicking on the unitypackage should open it in Unity).

If you are just getting started, there are more detailed steps in the documentation section on Getting Started.
For more options, see the documentation section on Installing.

Updating an existing project

  • As with Unity updates, it is always recommended that you back up your whole Unity project before performing an update.
  • Always check with your Lead Programmer and Technical Artist before updating your Spine runtime. Spine runtimes are source-available and designed to be user-modifiable based on varying project needs. Your project's Spine runtime may have been modified by your programmer. In this case, updating to the latest runtime also requires reapplying those modifications to the new version of the runtime.

In-place Update (.unitypackage)

  1. Open your Unity project.
  2. Import the .unitypackage into your existing project by double-clicking on the unitypackage file or dragging it into Unity editor Project view.
  3. The Import dialog will show which files are updated and will update them regardless of where you moved them in your project since you last imported.

  • This functionality may not work correctly if your meta files were corrupted or replaced. In that case, you may have to do delete the old version of the runtime before importing the unitypackage.
  • Much older versions of the unitypackage had inconsistent meta files for spine-c#. You may have to delete the older spine-csharp folder when updating. This otherwise works correctly.
  • Occasionally, major refactoring involves removing or merging some files. Importing the .unitypackage will not delete those leftover files when you update so you may have to do that yourself. Check here for announcements regarding changed/leftover files: http://esotericsoftware.com/forum/Noteworthy-Spine-Unity-Topics-5924

For more options, see the spine-unity documentation page section on updating.