複数のsspjを、SS6Player for Unityを使用して連続で再生する方法を解説します
今回使用する環境は以下の通りです。
- アニメーション作成
OPTPiX SpriteStudio Ver.6.0 - 再生するUnityの環境
SS6Player for Unity v1.0.4
Unity 2017.3.0f3
目次
作成手順
事前に再生するアニメーションをSpriteStudioで作成済であることを前提としています。
SpriteStudioを用いたアニメーションの作成方法については本ヘルプセンターをご覧ください。
新しくプロジェクトを作成
Unityを開き、Fileメニューから「New Project」を選択し、新しくプロジェクトを作成します。
SS6Player for Unity をセッティング
SS6Player for Unity をプロジェクトに加えます。
詳しい方法は「Unityにアニメーションを表示する」を参照してください。
各種フォルダを準備
アニメーションを流す仕組みを入れるフォルダを設けます。
Projectウィンドウを右クリックし、コンテキストメニューの「Create」→「Folder」でフォルダを作成します。

今回は Assets フォルダの下に
Demo という名称でフォルダを作成しました。
このフォルダに、スクリプトを納めるフォルダと、リソースを納めるフォルダを作成します。
今回は以下の名前のフォルダを作成しています。
- Script
スクリプトを納めます - Resources
リソースを納めます
以下の画像のようになります。

sspjをインポート
再生したいsspjをインポートします。
インポートの方法は「Unityにアニメーションを表示する」を参照してください。
インポート先は、先程準備した
Assets/Demo/Resources
を指定します。
今回は連続で再生するsspjを2つインポートしました。
- tenohira_no_bouken.sspj
- fire_sword.sspj

スクリプトをプロジェクトに追加する
次に再生するアニメーションを切り替えるスクリプトをプロジェクトに追加します。
今回は「MovieDemoVer.6.cs」という名称のスクリプトを作成しました。
これを
Assets/Demo/Script
を開き、ドロップして格納します。
MovieDemoVer6 と表示されていることを確認します。

sspjを表示するためにカメラを設置
Unity の Hierarchy ウィンドウ にカメラを追加します
Assets/SpriteStudio/Camera/Camera2D Pixel (720p)
の1オブジェクトをドロップします。

アニメーションを制御する
|
Hierarchy ウィンドウのコンテキストメニューを開いて、Create Emptyを選択、空のGameObjectを作成します。 |
![]() |
|
今回は名前を分かりやすくするため、クリックして名称を「MainObject」に変えます。 |
![]() |
|
Assets/Demo/Scriptを開き、先ほど組み込んだ MovieDemoVer6 をドラッグして、Hierarchy ウィンドウ の MainObject へドロップします。 ※ Hierarchy ウィンドウ の MainObject をクリック、 Inspectorへ表示された Add Component をクリック。開いたプルダウンメニューから Scripts を選択して、Movie Demo Ver6 を選択する方法もあります。 |
![]() |
|
Hierarchy ウィンドウ の MainObject をクリックし、InspectorにMovie Demo Ver 6(Script)項目が表示されることを確認します。 次にアニメーション表示の設定を行います。 |
![]() |
|
Sizeという項目が表示されます。ここに再生するアニメーション数を設定します。 数字を設定すると、「Element 0」「Element 1」という項目が増えます。 |
![]() |
|
それぞれに再生するアニメーションを設定します。 ここでは、 ※再生アニメーションのパスはResourcesと命名されたフォルダからの相対パスになります。 ※PrefabAnimationの中にあるリソースを指定する詳細については、GitHubの「制御用オブジェクトのプレハブを実体化するときの注意点」をご確認ください。 |
![]() |
再生
Unityの再生ボタンを押すと、設定したアニメーションが順番に表示されます。

スクリプトのソースコード
今回アニメーションの制御に使用した「MovieDemoVer6.cs」のコードは以下の通りです。
MovieDemoVer6.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovieDemoVer6 : MonoBehaviour
{
//再生アニメーションのresourcesフォルダ内のサブパス
[SerializeField]
public string[] FileNameList;
//現在再生しているアニメーション番号
private int m_Index;
//スプライトスタジオアニメを操作するためのクラス
private Script_SpriteStudio6_Root m_ScriptRoot;
void Start()
{
//初期化
m_Index = 0;
m_ScriptRoot = null;
}
void Update()
{
//アニメーションを再生していないなら再生を開始する
if(m_ScriptRoot == null)
{
if(m_Index >= 0)
{
//最初のアニメーションを再生
animationStart(m_Index);
}
}
}
void animationStart(int index)
{
//初期化
m_Index = -1;
m_ScriptRoot = null;
//再生するリソース名をリストから取得して再生する
if(FileNameList.Length > 0)
{
m_Index = index % FileNameList.Length;
string resourceName = FileNameList[m_Index];
if(string.IsNullOrEmpty(resourceName) == false)
{
//アニメーションを実体化
GameObject go = Instantiate(Resources.Load(resourceName), new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
if(go != null)
{
m_ScriptRoot = Script_SpriteStudio6_Root.Parts.RootGet(go);
if(m_ScriptRoot != null)
{
//アニメーション終了コールバックを設定.
m_ScriptRoot.FunctionPlayEnd = callbackPlayEnd;
//アニメーション再生
m_ScriptRoot.AnimationPlay(-1, 0, 1);
}
}
}
}
}
bool callbackPlayEnd(Script_SpriteStudio6_Root InstanceRoot, GameObject ObjectControl)
{
//再生しているアニメーションの操作クラスを初期化
m_ScriptRoot = null;
//次回のUpdateで次のアニメーションを再生開始
m_Index++;
//古いアニメーションはシーンから消す
return false;
}
}
関連ページ
- SS6Player for Unity でデータをインポートした際の警告について知りたい
インポートの際に発生する警告について解説しています。 - Unityにアニメーションを表示する
SpriteStudio Ver.6で作成したデータをSS6Player For UnityでUnityにインポートする方法を解説しています。 - Unityでキャラクターを動かす方法
サンプルデータを組み込んで、Unityでアニメーション切り替えなど制御する方法を解説しています。 - Unityの機能に変換して使用する
sspjをUnityの標準機能を使用する形に変換してインポートする方法を解説しています。
SS6Player For Unity
最新版、質問・要望は GitHubへ





