鳴らしているSEのボリュームを変更したかったので、Soundクラスを見てみるとフェードインアウトはあるがボリュームの設定は見当たらない。そこで追加してみた。
public int SetVolume(int volume) { if (NoSound) return -1; if (manager.music == this) return SDL.Mix_VolumeMusic(volume); for (int i=0;i<8;++i){ if (manager.chunk[i] == this) return SDL.Mix_VolumeChunk(chunk, volume); } return -1; }
引数には0から128の値を設定する。関数の戻り値は前回のボリューム値。
一応、正しく動作しているように聞こえるが自信なし。
デフォルトのボリュームに戻すのはどうすればいいのだろう。ボリュームに-1を設定すればいいのかと思ったがどうやら違うようだ。