【Unity】Addressableを使って音を再生しよう
目的
前回の記事でAddressableを使ってInstantiateを使いました。今回は音のリソースにアクセスしようと思います。前回の記事で作ったプロジェクトを変更したものになりますので、前回記事をみてプロジェクトを作ってください。
Addressableとは
Addressableとは新しいリソース管理システムです。興味のない方のために簡単に言うと、アセットをローカルとかネットからとか気にせずに読み込めるシステムです。詳細は公式を見てください。
Addressable Asset System(Addressables)は、複雑なライブコンテンツを提供する大規模な制作チーム向けのサポートを向上する Unity エディターおよびランタイムのアセット管理システムです。このシステムでは、非同期ロードを使用して、あらゆる依存関係のコレクションが存在する、任意の場所からロードを行うことができます。Addressables では、アセットバンドルをより効率的にパッキングし、イテレーション時間を減らすことで、ダイナミックなゲームをシンプルに作成できます。
Addressables を使用すれば、イテレーション時間、依存関係管理、メモリ管理、コンテンツパッキングなど、開発者が抱えるさまざまな課題に対応することができます。
Unity公式ホームページより https://unity.com/ja/how-to/simplify-your-content-management-addressables#:~:text=Cloud%20Content%20Delivery-,Addressables%20%E3%81%AE%E6%A6%82%E8%A6%81,%E3%81%AE%E3%82%A2%E3%82%BB%E3%83%83%E3%83%88%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A7%E3%81%99%E3%80%82
使用方法
「Plane」に「AudioSource」を加える
InspectorViewの一番下にある「AddComponent」から「AudioSource」を追加してください。その際「Play On Awake」のチェックを外すようにしてください。
MP3ファイルの追加
ProjectViewに自分の好きなmp3ファイルを追加し、InspectorViewの一番上にある Addressableにチェックを入れ、出てきたアドレスをコピーしておいてください。
今回はファイル名を「make」でアドレスは「Assets/make.mp3」になりました。
ソースの変更
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class NewBehaviourScript : MonoBehaviour
{
private AsyncOperationHandle<GameObject> handle;
private AsyncOperationHandle<AudioClip> snd;
private AudioSource audioSource;
// Start is called before the first frame update
void Start()
{
handle = Addressables.LoadAssetAsync<GameObject>("Assets/Sphere.prefab");
snd = Addressables.LoadAssetAsync<AudioClip>("Assets/make.mp3");//←追加
audioSource = gameObject.GetComponent<AudioSource>();//←追加
}
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
Instantiate(handle.Result);
}
else if(Input.GetKey(KeyCode.LeftShift))//←このif部分を追加
{
audioSource.clip = snd.Result;
audioSource.Play();
}
}
private void OnDestroy()
{
if(handle.IsValid())
Addressables.Release(handle);
if (snd.IsValid())//←このif部分を追加
Addressables.Release(handle);
}
}
最初に再生するためのAudioSouceと再生される音楽ファイルを読み込み、
左シフトを押すことでAudioSourceのクリップに登録。
その後再生しています。
実行すると音楽が再生されることがわかると思います。
まとめ
今回はAddressableを使うことによりサウンドの再生方法を説明しました。
これらの方法と以前の国際化を上手に使えばすべてのリソースをスクリプト内から簡単に指定することができるようになりますので、ぜひ活用してみてください。
ロボットコーダーズの生徒のみプログラミングされたサンプルプロジェクトの提供をしています。欲しい方は各教室の先生に連絡してください。