LoginSignup
2
2

More than 5 years have passed since last update.

【Unity】Gif動画を簡単にメッシュやスプライトに貼って再生できるアセットAnimated GIF Player

Posted at

はじめに

Animated GIF Player」とは
Animated_GIF_Player_-_Asset_Store.png

アニメーションGIFプレーヤでは、デスクトップとモバイルでアニメーションGIFを再生できます。

デモムービー - 短いチュートリアル

アニメーションGif Playerコンポーネントをgameオブジェクトに追加し、GIFファイルを選択して、再生を押してください。

主な特徴
スクリプトを必要とせずに使いやすい
-GIFはパフォーマンスを向上させるために別のスレッドでデコードすることができます
- 純粋なC#のソリューション、余分なプラグインのインストールや編集が不要
コメント付きのソースコードが含まれています
- MovieTextureの代わりとしての短いビデオクリップには便利です
デバイスとウェブの両方からGIFを読み込む

動作環境

Mac 10.13.6
Unity 2018.2.5f1
Animated GIF Player 1.13.4

#使い方
アセットをインポートしてきたら、
gifを貼りたいオブジェクトをシーン上の配置してください
それでAddComponentで「AnimatedGifPlayer」を追加してください
追加で一つ注意としては必ず「RawImage」「MeshRenderer」「SpriteRenderer」コンポネーントのどれか一つ入っているオブジェクトに追加してください
シェーダーは特に差し替えなくても大丈夫です

MeshRendererの場合
Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png

次にAnimatedGifPlayerのSelectGIFを押して、Gifを選択します。
Gifの格納場所は必ず「StreamingAssets」フォルダに格納して参照しましょう

あとは再生して上げれば再生されるはずです
ちなみアルファにも対応されています

Sep-08-2018 18-36-00.gif

AnimatedGifPlayerパラメーター

Unity_2018_2_5f1_Personal__64bit__-_SampleScene_unity_-_New_Unity_Project__2__-_PC__Mac___Linux_Standalone__Personal___Metal_.png

項目 内容
Loop これをtrueに設定すると、GIFループが作成されます(デフォルト:true)
AutoPlay 初期化時にGIFの再生を開始するには、これをtrueに設定します。
FileName StreamingAssetsフォルダ内のGIFのファイル名 SelectGifで直接参照できます
ThreadedDecoder 有効にすると、プレーヤーは別のスレッドで各GIFフレームをデコードしますパフォーマンスを向上させます。 (デフォルト:有効)
CacheFrames 有効にすると、デコード後に各フレームがメモリにキャッシュされます。 デコードはやや遅くなります。 これは、GIFをループするときに使用し、デコーダの実行を維持したくない場合に使用します。(デフォルト:無効)
BufferAllFrames 有効にすると、すべてのフレームがロードされ、キャッシュされます GIFプレーヤーが初期化されます。 起動は少し遅くなります。なぜなら、再生はすべてのフレームデコードされる。 無効にすると、必要に応じて各フレームがデコードされます。 (デフォルト:無効)
OverrideTimeScale Gifの再生速度をTime.timeScaleから独立して設定します
PlaybackSpeed 再生速度

スクリプト制御

アセットに入っているサンプルコードCodeExample.csを解説
初期化で再生したいGifをAnimatedGifPlayerにセットして、Play,Pauseができる簡単なサンプル

CodeExample.cs
using UnityEngine;
using UnityEngine.UI;
using OldMoatGames;

public class CodeExample : MonoBehaviour {
        //gifプレイヤー
    private AnimatedGifPlayer AnimatedGifPlayer;
    //再生ボタン
    public Button PlayButton;
       //停止ボタン
    public Button PauseButton;

    public void Awake() {
        // AnimatedGifPlayer取得
        AnimatedGifPlayer = GetComponent<AnimatedGifPlayer>();

        // StreamingAssetsフォルダのファイル名指定
        AnimatedGifPlayer.FileName = "AnimatedGIFPlayerExampe 3.gif";

        // 自動再生を無効にする
        AnimatedGifPlayer.AutoPlay = false;

        // GIFが再生準備ができているときに再生を開始する準備完了イベントを追加する
        AnimatedGifPlayer.OnReady += OnGifLoaded;

        // ロードに失敗した場合の準備完了イベントを追加する
        AnimatedGifPlayer.OnLoadError += OnGifLoadError;

        // GIFプレーヤーを初期化する
        AnimatedGifPlayer.Init();

    }

    private void OnGifLoaded() {
        PlayButton.interactable = true;

        Debug.Log("GIF size: width: " + AnimatedGifPlayer.Width + "px, height: " + AnimatedGifPlayer.Height + " px");
    }

    private void OnGifLoadError() {
        Debug.Log("Error Loading GIF");
    }

    //再生
    public void Play() {
        // GIFの再生を開始する
        AnimatedGifPlayer.Play();

        // 再生ボタンを無効にする
        PlayButton.interactable = false;

        // 一時停止ボタンを有効にする
        PauseButton.interactable = true;
    }
       
        //停止
    public void Pause() {
        // GIFの再生を停止する
        AnimatedGifPlayer.Pause();

        // 再生ボタンを有効にする
        PlayButton.interactable = true;

        // 一時停止ボタンを無効にする
        PauseButton.interactable = false;
    }

    public void OnDisable() {
        AnimatedGifPlayer.OnReady -= Play;
    }
}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2