スマゲ

スマートなゲームづくりを目指して日々精進

Unity,iOSでシステムサウンド、バイブレーションを呼び出すプラグイン

UnityでiOSに入っているシステムサウンドやバイブレーションを呼び出すプラグインを作成しました

利用用途
  • iOS標準のシステムサウンドをアプリ内で利用したい
  • Unity標準で利用でいるバイブレーション呼び出しメソッド Handheld.Vibrate 以外の種類のバイブレーションを利用したい
本体

github.com

インストール

Githubリポジトリのリリースページにあるunitypackageを利用してください

使い方

利用したいシステムサウンドのidを引数にメソッドを呼び出す

int soundId = 1001;
UniIosAudioService.PlaySystemSound(soundId);
システムサウンドの探し方

GithubリポジトリのExample.sceneにシステムサウンドをチェックする機能があるので、idを探すときに利用してください。
※UnityEditorでは動作しないため実機ないしシミュレータで確認を行ってください

f:id:sanukin39:20190217124608p:plain:w320
system sound list

実装

プラグインを書いて、UnityのC#から呼び出す

プラグイン(iOSAudioServicePlaySystemSound.mm)

#import <Foundation/Foundation.h>
#import <AudioToolBox/AudioToolBox.h>

extern "C" void audioServicePlaySystemSound (int soundId)
{
    AudioServicesPlaySystemSound(soundId);
}

呼び出しスクリプト(UniIosAudioService.cs)

using System.Runtime.InteropServices;

public class UniIosAudioService
{
    [DllImport("__Internal")]
    private static extern void audioServicePlaySystemSound(int soundId);
    
    public static void PlaySystemSound(int soundId)
    {
#if !UNITY_EDITOR && UNITY_IOS
        audioServicePlaySystemSound(soundId);
#endif
    } 
}
まとめ

システムサウンドが案外大量にあったので、欲しいサウンドやバイブレーションを探すのが面倒だった