複数のsspjを、SS5Player for Unityを使用して連続で再生する方法を解説します
今回使用する環境は以下の通りです。
- アニメーション作成
OPTPiX SpriteStudio Ver.5.8 - 再生するUnityの環境
SS5Player for Unity v1.5.16
Unity 2017.1
目次
作成手順
事前に再生するアニメーションをSpriteStudioで作成済であることを前提としています。
SpriteStudioを用いたアニメーションの作成方法については本ヘルプセンターをご覧ください。
プロジェクトを作成する
Unityを開き、Fileメニューから「New Project」を選択し、新しくプロジェクトを作成します。
作成したプロジェクトの中に、SS5Player for Unityを追加します。
詳しい手順は以下のページを参照してください。
データを格納するフォルダを作成する
作成したアニメーションと、連続再生のためのスクリプトを格納するフォルダを作成します。
今回は「Assets」フォルダの下に「Demo」という名称でフォルダを作成します。
1.Projectウィンドウで「Assets」フォルダを選択し、コンテキストメニューを開いて「Create」から「Folder」を選択します。 今回は分かりやすくするために「Demo」という名称に変更します。 |
![]() |
2.この「Demo」フォルダの下に、スクリプトを納める「Script」、リソースを納める「Resources」を作成します。 | ![]() |
sspjをインポートする
再生したいアニメーションのsspjをUnityにインポートします。
インポート先は「Resources」を指定してください。
sspjをUnityにインポートする方法については以下のページをご覧ください。
スクリプトを準備する
連続再生の制御を行うためのスクリプトをプロジェクトに追加します。
Projectウィンドウの「Script」を指定し、スクリプトをドラッグドロップして追加してください。
今回は「MovieDemo.cs」というC#で作成したスクリプトを追加しました。
SpriteStudioで作成したアニメーションの再生、再生終了時に次のアニメーションを指定して再生という動作を行います。
カメラの設定をする
表示するためのカメラの設定を行います。
アニメーション制御を組み込む
表示するアニメーションを設定する
再生する
Unityの再生ボタンを押すと、設定したアニメーションが順番に表示されます。
スクリプトのソースコード
今回アニメーションの制御に使用した「MovieDemo.cs」のコードは以下の通りです。
MovieDemo.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MovieDemo : MonoBehaviour { //アニメションを表示するView [SerializeField] public Script_SpriteStudio_ManagerDraw RenderingView; //再生アニメーションのresourcesフォルダ内のサブパス [SerializeField] public string[] FileNameList; //現在再生しているアニメーション番号 private int m_Index; //スプライトスタジオアニメを操作するためのクラス private Script_SpriteStudio_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 = Library_SpriteStudio.Utility.Parts.RootGetChild(go); if(m_ScriptRoot != null) { //表示する描画マネージャーを設定 m_ScriptRoot.InstanceManagerDraw = RenderingView; //アニメーション終了コールバックを設定. m_ScriptRoot.FunctionPlayEnd = callbackPlayEnd; //アニメーション再生 m_ScriptRoot.AnimationPlay(0, 1, 0, 1.0f); } } } } } bool callbackPlayEnd(Script_SpriteStudio_Root InstanceRoot, GameObject ObjectControl) { //再生しているアニメーションの操作クラスを初期化 m_ScriptRoot = null; //次回のUpdateで次のアニメーションを再生開始 m_Index++; //古いアニメーションはシーンから消す return false; } }