spine-unity
The spine-unity runtime provides functionality to load, manipulate and render Spine skeletal animation data using Unity directly, without any other plugins. spine-unity is based on spine-csharp and is very similar to spine-tk2d.
A Spine skeleton is a GameObject and can be used throughout Unity like any other GameObject. It depends only on Unity's MeshRenderer, so it is close to the metal. SkeletonUtility allows other GameObjects to interact with the Spine skeleton, to control bones in the skeleton, be controlled by the skeleton, attach colliders, etc.
Documentation
The Spine Unity Examples forum thread has many videos on how to use both spine-unity and spine-tk2d features.
Quick installation
Download and run this Unity package:
In the Assets/Examples/Scenes folder you will find many example scenes that demonstrate various spine-unity features.
Manual installation
You can also choose to setup and run from the Git files:
- Download the Spine Runtimes source using git or by downloading it as a zip.
- Copy the contents of
spine-csharp/srctoAssets/spine-csharpin your Unity project directory. - Copy the
spine-unity/Assets/spine-unitytoAssets/spine-unityin your Unity project directory.
Importing skeleton data
There are a few options for importing Spine skeletons into your Unity project:
Drag and drop import
- Drag and drop a folder containing the JSON, atlas and PNG files exported from Spine directly into Unity.
- Drag the prefab that was created into your scene.
The drag and drop video shows how this works.
Automated import
- Place the JSON, atlas and PNG files exported from Spine into your Unity project directory.
- Right click the JSON file and click
Spine,Ingestto create the Unity assets. - Right click the SkeletonData asset that was created and click
Spine,Spawn.
The readme PDF illustrates these steps.
Manual import
- Follow the setup video to manually set up the assets for a skeleton in Unity. This video may prove useful to understand how the pieces fit together but the other import methods are much easier.
Examples
To run the examples:
- Download the Spine Runtimes source using git or by downloading it as a zip.
- Copy the contents of
spine-csharp/srctospine-unity/Assets/spine-csharp. - Open an example scene file from
spine-unity/Assets/examples/using Unity 4.3.4+.
- spineboy This shows the spineboy skeleton. First an animation is played that shows the draw order changing and events firing, then spineboy jumps and walks. Click spineboy to jump again. Notice the walk and jump animations are mixed and transition smoothly. The white cube on spineboy's right hand is a separate GameObject that is positioned using a
BoneComponent. This example uses images that are split across two atlas pages. This demonstrates a multi-page atlas, but of course has a high number of draw calls. - goblins* This shows a male and female goblin that use the same skeleton and animations. Click to change the skin from male to female and back. It has a single atlas page, so is drawn with just 1 draw call. It uses the
Skeleton Litshader for vertex lighting. The Goblins.cs script manipulates the head bone after the animation is applied. - dragon* This shows the dragon skeleton. The flying animation has many image changes. It also shows shadow rendering. This example uses a multi-page atlas so has a high number of draw calls.
Notes
- Atlas images should use premultiplied alpha when using the shaders that come with spine-unity.
- This slightly outdated spine-unity tutorial video may still be useful.
- Unity scales large images down by default if they exceed 1024x1024, which causes atlas coordinates to be incorrect. To fix this, override the import settings in the Inspector for any large atlas image you have so Unity does not scale it down.
- Unity 4.3+'s 2D project defaults cause atlas images added to the project to be imported with the Texture Type "Sprite", which may cause artifacts when using Spine's Skeleton shader. To avoid these artifacts, make sure the Texture Type is set to "Texture".