【Unity】PNG連番アニメーションスクリプト
2019-12-03
連番PNG画像をImageコンポーネント上でアニメーションとして再生するスクリプト。
LoadingSpinnerGenerator(https://loading.io/)などのサイトで作成したものをサクッとUnity上で読み込み、アニメーションさせる。

Source code
PngSequenceAnimator.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PngSequenceAnimator : MonoBehaviour { [SerializeField] private Image _targetImage; [SerializeField] private string _folderPath; [SerializeField] private string _prefix; //接頭辞 [SerializeField] private int _startNumber; [SerializeField] private int _endNumber; [SerializeField] private float _frameInterval = 0.1f; [SerializeField] private List<Sprite> _animatedPngSpriteList; private int _currentFrame; private bool _isAnimation = false; private void Awake() { for (int i = _startNumber; i < _endNumber + 1; i++) { _animatedPngSpriteList.Add(Resources.Load(_folderPath + "/" + _prefix + i, typeof(Sprite)) as Sprite); } } [ContextMenu("StartAnimation")] public void StartAnimation() { _isAnimation = true; StartCoroutine(UpdatePNG()); } [ContextMenu("StopAnimation")] public void StopAnimation() { _isAnimation = false; } private IEnumerator UpdatePNG() { while (_isAnimation) { _targetImage.sprite = _animatedPngSpriteList[_currentFrame]; _currentFrame++; if (_currentFrame >= _endNumber) _currentFrame = 0; yield return new WaitForSeconds(_frameInterval); } yield break; } } |
How to use

- TargetImage – Spriteを適応していくImageコンポーネント
- FolderPath – Assets/Resources/*****/frame-1.png の「*****」の部分
- Prefix – 連番Png画像ファイルの接頭辞
- StartNumber – 連番画像の開始番号
- EndNumber – 連番画像の終了番号
- FrameInterval – フレームの更新間隔
- AnimatedPingSpriteList – Awake内で自動的に連番PngをSpriteとして入れるList