West Hill 開発メモ

以前作成したUnity UI(uGUI)で頂点カラーを付けるUIエフェクト(uGUI-Effect-Tool)に
だんだん透明になるアルファグラデーション用のコンポーネントを追加しました。

使い方は(Add Component >> UI/Effects/Gradient Alpha)でUIオブジェクトにつけるだけです。
ugui-effect-tool_gradient_alpha01
テキストの場合、全体か1文字づつか選べます。
ugui-effect-tool_alpha02
カラーグラデーションの方にも同様のパラメーターを追加しました。
ugui-effect-tool_gradient03 
カラーグラデーション、色合成についての以前の記事
このエントリーをはてなブックマークに追加 Clip to Evernote

Unity上で楽曲をテンポ解析してBPMを推定する機能を作ってみました。

使い方
public AudioClip targetClip;

private void Start()
{
    int bpm = BpmAnalyzer.AnalyzeBpm(targetClip);
    Debug.Log("BPMは多分 " + bpm + " くらい");
}
AnalyzeBpmの中ではAudioClip.GetData()で取ってきたオーディオのサンプルデータを解析しています。

BpmAnalyzer.cs内で
サンプルデータをある程度で区切ってまとめるCreateVolumeArrayメソッドと、
実際にBPMを推定しているSearchBpmメソッドは、
処理時間が結構かかるので別スレッドから呼ぶように変更したほうが良いと思います。

※コルーチンみたいに使えるThread Ninja(Unity Asset Store)はおすすめ。
UnityEngine名前空間でもMathfなら別スレッドからでも呼べます。

また、例のシーンではメトロノームを使っていますが、実際の楽曲はテンポが動的に変わったりするので、万能ではないです。
楽曲を数秒おきに区切ってその範囲でBPMを推定する等が良いかもしれません。


参考
テンポ解析のアルゴリズム:
C/C++言語で音声ファイルのテンポ解析を行うサンプルプログラム 

AudioClip.GetDataで取れる値について:
このエントリーをはてなブックマークに追加 Clip to Evernote

Steam上でゲームをリリースする際に、Steamworks SDKの組み込みが必要になります。
steamworks
Steamworks ドキュメンテーション (要Steam開発者登録)

Steamworks SDKはC++のdllのため、Unityで使う場合はネイティブコード呼び出しで使用する必要がありますが、
ほぼ全APIをC#でラップしてくれているありがたいプロジェクトがありました。

GitHub - Steamworks.NET
ドキュメント - Steamworks.NET

このエントリーをはてなブックマークに追加 Clip to Evernote

このページのトップヘ