課題5: サウンド再生の最適化とパフォーマンス向上
目的: 多くのアイテムが一度に出現しても、パフォーマンスに影響を与えないようにサウンド再生の最適化を行い、効率的なサウンド管理方法を学ぶ。
目次
ステップ:
1. サウンド再生数の制限:
一度に再生できるサウンドの数を制限し、過剰なサウンド再生が発生しないようにする。
2. サウンド管理スクリプトの作成:
サウンドの再生を管理する専用のスクリプトを作成し、再生数をカウントする。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundManager : MonoBehaviour
{
public static SoundManager instance;
public int maxSimultaneousSounds = 10; // 最大同時サウンド数
private int currentSoundCount = 0;
void Awake()
{
if(instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(gameObject);
}
}
public void PlaySound(AudioClip clip, Vector3 position)
{
if(currentSoundCount >= maxSimultaneousSounds)
return;
currentSoundCount++;
AudioSource.PlayClipAtPoint(clip, position);
StartCoroutine(DecreaseSoundCount(clip.length));
}
IEnumerator DecreaseSoundCount(float delay)
{
yield return new WaitForSeconds(delay);
currentSoundCount--;
}
}
3. ItemControllerでSoundManagerを使用するように変更:
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Basket")
{
// SoundManagerを使用してサウンドを再生
SoundManager.instance.PlaySound(this.itemSE, transform.position);
Destroy(gameObject);
}
}
4. SoundManager
をシーンに追加:
- 新しい空のGameObjectを作成し、
SoundManager
スクリプトをアタッチする。
5. テストと確認:
- 多数のアイテムを短時間で取得し、サウンド再生が制限されていること、かつパフォーマンスが維持されていることを確認する。
学習ポイント:
- サウンド再生の最適化方法。
- シングルトンパターンを使用したマネージャークラスの作成。
- コルーチンの基本的な使用方法。
ディスカッション
コメント一覧
まだ、コメントがありません