SystemSound が提供しない AVAudioPlayer が提供するボリューム コントロールに、AVAudioPlayer を使用し、SystemSound を使用しないとします。
AVAudioPlayer では、一度に開くことができるプレーヤーの数に制限があるようです。サンプル プロジェクトのコードで、200 個の AVAudioPlayer のリストを作成すると、List が正常に機能することがわかります。しかし、その数を 300 に増やすと、エラーでクラッシュします。私の唯一の結論は、一定数のプレイヤーを作成することが許可されているということです。これは事実ですか?クラッシュすることなく、より多くのプレーヤーを作成する方法はありますか?
AVAudioPlayer player;
NSUrl mediaFile;
List<AVAudioPlayer> playerList;
DateTime before = DateTime.Now;
mediaFile = NSUrl.FromFilename("mySoundConvertedToCAF.caf");
player = AVAudioPlayer.FromUrl(mediaFile);
player.Delegate = new AVAudioPlayerDelegate();
Console.WriteLine("total ms = " + DateTime.Now.Subtract (before).TotalMilliseconds);
playerList = new List<AVAudioPlayer>();
// For loop 200 times works
// for ( int i = 0; i < 200; i++ )
// For loop 300 times does NOT work. Almost as if somewhere between 200 and 300 AVAudioPlayers is the max amount you can have open at once... Is it because all of them are accessing the same sound file?
for ( int i = 0; i < 300; i++ )
{
playerList.Add (AVAudioPlayer.FromUrl(mediaFile));
playerList[i].Delegate = new AVAudioPlayerDelegate();
}
Console.WriteLine("I made a list of " + playerList.Count() + " AVAudioPlayers!");
playerList[0].Play();
Thread.Sleep(500);
playerList[1].Play();
なぜ私がこれをやりたいのかというと、それはiOSゲームエンジンの仕事のためです...一度に何百ものサウンドを再生するわけではありませんが、プレーヤーを開いて、いつでもロードせずに再生できるようにしたいです新しい AVAudioPlayer またはメディア ファイルの変更....