Unityでスプライトを点滅させる方法

この技術資料では、Unityでスプライトを点滅させる簡単な方法について説明します。SpriteRendererを用いたスプライトの表示・非表示の切り替えにより、スプライトを点滅させることができます。スプライトの点滅は、コルーチンを使用して一定間隔で繰り返します。

目的

この技術資料の目的は、Unityのコルーチンを利用してスプライトを点滅させる方法を理解し、無駄なリソース消費を避けるためにコルーチンを適切に停止する方法を学ぶことです。


必要なコンポーネント

  • SpriteRenderer: スプライトを表示するためのコンポーネント
  • コルーチン: 非同期処理を簡単に実行するための機能

スクリプトの概要

  1. スプライトの点滅を実装するには、SpriteRendererenabledプロパティを使ってスプライトの表示・非表示を切り替えます。
  2. 一定間隔でこのプロパティを変更するために、Unityのコルーチンを使用します。
  3. コルーチンの停止には StopCoroutine を使用し、無駄なループを防ぎます。

サンプルコード

using System.Collections;
using UnityEngine;

public class SpriteBlink : MonoBehaviour
{
    private SpriteRenderer spriteRenderer;
    public float blinkInterval = 0.5f;
    public bool isBlinking = true;

    // コルーチンの参照を保持する
    private Coroutine blinkCoroutine;

    private void Start()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();

        // 点滅を開始
        blinkCoroutine = StartCoroutine(BlinkSprite());
    }

    private IEnumerator BlinkSprite()
    {
        while (isBlinking)
        {
            spriteRenderer.enabled = !spriteRenderer.enabled;
            yield return new WaitForSeconds(blinkInterval);
        }
    }

    public void StopBlinking()
    {
        if (blinkCoroutine != null)
        {
            // コルーチンを停止
            StopCoroutine(blinkCoroutine);
            blinkCoroutine = null;  // コルーチンの参照をクリア
        }

        // スプライトを表示状態に戻す
        spriteRenderer.enabled = true;
    }
}

コードの説明

  • spriteRendererSpriteRenderer コンポーネントを保持する変数です。
  • blinkInterval: スプライトが点滅する間隔(秒単位)を設定します。
  • isBlinking: スプライトの点滅を制御するフラグです。true にすると点滅を開始し、false にすると停止します。
  • Coroutine blinkCoroutine: コルーチンの参照を保持します。これを使ってコルーチンを停止できます。
  • StartCoroutine(BlinkSprite())BlinkSprite() コルーチンを開始し、スプライトの点滅を実行します。
  • StopCoroutine(blinkCoroutine): 点滅のコルーチンを停止します。

スクリプトの適用方法

  1. Unityエディタで、スプライトを持つゲームオブジェクトを選択します。
  2. スクリプトを作成し、選択したゲームオブジェクトにアタッチします。
  3. スクリプト内の blinkInterval で点滅間隔を調整できます。
  4. 点滅の停止は、必要に応じて StopBlinking() を呼び出します。

応用例

  • 点滅のタイミングをプレイヤーの入力や特定の条件で変更する。
  • 点滅をイベントとして利用し、ゲーム内の重要なオブジェクトを強調する。

この資料に基づいて、無駄なリソース消費を防ぎつつ、スプライトの点滅機能をUnityで実装することができます。さらに応用することで、ゲームやアプリケーションのユーザー体験を向上させることも可能です。

Unity

Posted by hidepon