パラパラアニメーション コルーチン編
これのコルーチン編
robamemo.hatenablog.com
仕様
・Image単体をprefabにしてCanvasに配置し、再生後はフェードアウトしてDestroy()する
・スプライトはリソースから連番で読み込む
コード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Movie : MonoBehaviour { [Header ("スプライトを読み込むImage")] [SerializeField]Image img; [Header ("スプライトへのパス")] [SerializeField]string path; [Header ("最初の画像番号")] [SerializeField]int counter; [Header ("最後の画像番号")] [SerializeField]int last; [Header ("フレームレート")] [SerializeField]int framerate; [Header ("フェードアウト秒数")] [SerializeField]float fade_speed; int def_quality; int def_framerate; void Start () { def_quality = QualitySettings.vSyncCount; def_framerate = Application.targetFrameRate; QualitySettings.vSyncCount = 0; Application.targetFrameRate = framerate; StartCoroutine (OnStart ()); } IEnumerator OnStart () { while (counter <= last) { //画像番号の前に 0 がつかない場合はnumを削除 string num = ""; if (counter < 10) { num = "000" + counter.ToString (); } else if (counter < 100) { num = "00" + counter.ToString (); } else if (counter < 1000) { num = "000" + counter.ToString (); } else { num = counter.ToString (); } //画像番号の前に 0 がつかない場合は (path + counter.ToString ()); img.sprite = Resources.Load<Sprite> (path + num); counter++; yield return null; } Application.targetFrameRate = def_framerate; QualitySettings.vSyncCount = def_quality; StartCoroutine (OnComplete ()); yield break; } IEnumerator OnComplete () { Color color = img.color; float variation = color.a / fade_speed; while (color.a > 0f) { color.a -= variation * Time.deltaTime; img.color = color; yield return null; } Destroy (this.gameObject); yield break; } }
設定
開始コード
スクリプトで配置する場合
GameObject prefab = Resources.Load<GameObject> ("prefabへのパス"); GameObject movie = Instantiate (prefab); movie.transform.SetParent (GameObject.Find ("親ゲームオブジェクト名").transform); movie.transform.localPosition = Vector3.zero; movie.transform.localScale = Vector3.one;
以上