コンテンツにスキップ
JA

Editor メニュー一覧

Hapbeat SDK は Unity Editor のトップレベルメニュー Hapbeat にすべての操作を集約しています。役割ごとに区切り線で分かれた flat 構成で、SDK 開発者向けの項目だけが最下部の Developer/ サブメニューに分離されています(end-user の install では非表示)。

Hapbeat/
Open Event Map ← Window (Event ID + Wiring 管理メイン画面)
Open Batch Setup ← Window (複数 GO に Trigger を一括設定)
Open Settings ← Window (接続設定 / Group / Bridge UI)
─────────────────────────────
Create Event Router ← シーンに [Hapbeat Event Router] を配置
Create Event Map ← EventMap .asset だけを作成
─────────────────────────────
Initial Scene Setup ← Router + EventMap を一括作成 (新規シーン用)
Create HapbeatSDK Folder ← Assets/HapbeatSDK/ の標準レイアウトを生成
─────────────────────────────
Export Event Map (Selected) ← 選択中 EventMap を Markdown summary に書き出し
Export Event Map (All in Project) ← project 内全 EventMap を一括 Markdown 化
Normalize Audio Folder (16kHz · 2ch ...) ← フォルダ内 WAV を 16kHz / stereo / PCM16 に揃える
─────────────────────────────
Attach Event Logger to Selected ← 選択 GO の UnityEvent をログに流す配線を追加
Remove Event Logger Wiring from Selected ← 上記の解除
Logs/Start Recording ← Hapbeat 系ログのファイル記録を開始
Logs/Stop Recording ← 記録を停止して保存
Logs/Reveal Current File ← 記録中ログを Explorer/Finder で表示
Logs/Open Logs Folder ← ログ保存先フォルダを開く
Logs/Dump Last Recording to Console ← 直近のログを Console に流す
Close Edit-mode Transport ← Edit-mode の UDP 接続を強制クローズ
Disable Verbose Log on All Hapbeat Components ← _verboseLog / _debugLog 一括 off
─────────────────────────────
Developer/Build Basic Example ← Basic サンプル一式の scaffold (Local/Embedded install のみ)
Developer/Sync HapbeatSDK → Samples~ (Showcase)
Developer/Sync HapbeatSDK → Samples~ (BasicExample)

セクションの分け方:

  1. Window 系 (top): ウィンドウを開く操作。よく使うので最上段に配置。
  2. Create 系: 日常的な author 操作。Event Router / Event Map を個別に作成。
  3. Initial / 1 回限り: 初期セットアップや特殊ケースで実行するもの。Initial Scene Setup は (Router + EventMap + フォルダ) の一括コマンド、Deploy Imported Sample は Samples フォルダから HapbeatSDK/ への展開。
  4. Authoring tools: EventMap export / Audio フォーマット変換 (アセット成果物の加工)。
  5. Diagnostics: 配線テスト・ログ記録・transport 緊急クローズ・冗長ログ一括 OFF。デバッグ目的。
  6. Developer (gate hidden in UPM consumer installs): SDK 開発者専用。HapbeatDevModeMenuGate で UPM Git URL / registry installs では非表示。

加えて以下のメニュー位置にも Hapbeat エントリがあります:

  • GameObject → Hapbeat → Event Router (Hierarchy 右クリック含む) — Create Event Router と同じ
  • Assets → Create → Hapbeat → Config / Event Map — ScriptableObject 生成
  • Add Component → Hapbeat/… — 各種 Trigger / Bridge / Helper をコンポーネントとして追加

接続設定を編集する Window。

設定用途
PortUDP ポート (デフォルト 7700)
Group送信先デバイスのグループ ID (0 = 全デバイス)
アプリ名Hapbeat デバイスのディスプレイに表示するクライアントアプリ名。Max 16 文字 (display grid 幅)。デフォルトの app_name 要素 (8x1) では先頭 8 文字のみ表示。空欄なら Application.productName が自動使用 (16 文字超過時は切り詰め)
Use BridgeESP-NOW 経由 (上位構成) を使う場合のみ ON
Ping Intervalキープアライブ送信間隔 (秒)

実機との Ping テストや、シーン外からの設定編集に使います。Assets/Create/Hapbeat/Config で生成した HapbeatConfig ScriptableObject の Inspector と内容は同じ。

Hapbeat 統合作業のメイン画面。シーン内の Event ID 一覧、各 Trigger の wiring (どの GO にどの Trigger が付いているか)、ParameterBinding の設定をすべてここから操作します。

主な機能:

  • 左ペイン: EventMap.asset の全エントリ一覧 (mode / target / gain などをカード表示)
  • 右ペイン: 選択中エントリの詳細編集 (Event ID / streamClip / target / gain / Notes / Bindings)
  • Wiring セクション: 選択中エントリを発火する Trigger を逆引きスキャン
  • Play モード中の Test 再生 / Snapshot/Restore (実機調整時の値を保存・復元)

詳細: Event Map ウィンドウ

複数の GameObject (例: 同じ Tag の Pin × 6) に Trigger コンポーネントを一括追加するための補助 Window。Drag&Drop で参照を取り込み、適用先を絞ってまとめて配線できます。

ユースケース:

  • ボウリングのピン 6 個に同じ HapbeatCollisionTrigger を配るとき
  • XR インタラクタブル多数に HapbeatUnityEventTrigger を配るとき

新規シーンへの推奨入口。次を 1 コマンドで揃えます:

  • Assets/HapbeatSDK/ フォルダレイアウト (Kits / Scenes / EventMaps)
  • [Hapbeat Event Router] GameObject (内部に HapbeatManager singleton)
  • Assets/HapbeatSDK/EventMaps/<scene-name>-EventMap.asset
  • Event Map ウィンドウを開いて新規 asset を選択状態にする

再実行は idempotent — 既存の Router / EventMap があれば再利用するだけで、複製や上書きはしません。

[Hapbeat Event Router] GameObject だけを配置します。中身は HapbeatManager (singleton)。EventMap は触らないので、すでに EventMap を持っていてシーンに Router だけ追加したい場合に使います。

Hierarchy 右クリック → Hapbeat → Event Router でも同じことができます。

Assets/HapbeatSDK/EventMaps/...asset だけを生成します。シーンに Router は追加しません。複数の EventMap を持ちたい advanced ケース用 (例: シーンごとに別の EventMap を持つ)。

Assets → Create → Hapbeat → Event Map でも同じ asset を作れますが、こちらは保存先フォルダを尋ねます (HapbeatSDK 標準パスは尊重されない)。


Assets/HapbeatSDK/ 配下に標準レイアウトを生成します:

Assets/HapbeatSDK/
├── Kits/ ← 触覚波形 (Studio から deploy / 自前 Kit を置く場所)
├── Scenes/ ← 生成サンプルシーン
└── EventMaps/ ← EventMap.asset

Initial Scene Setup も内部で呼ぶので、明示的に叩く必要はありません。「最初に手動で枠だけ作っておきたい」時の補助。

Normalize Audio Folder (16kHz · 2ch · PCM16)

Section titled “Normalize Audio Folder (16kHz · 2ch · PCM16)”

指定フォルダ配下の WAV を Hapbeat 標準形式 (16kHz / stereo / PCM16) に揃えます。Tutorial 用音声を一括コンバートする時など、StreamClip mode で送信予定の素材整形に使います。


Export Event Map (Selected) / (All in Project)

Section titled “Export Event Map (Selected) / (All in Project)”

HapbeatEventMap.asset の内容を Markdown summary として書き出します。AI 支援で wiring を相談する時や、デザインドキュメントへ貼る用途を想定。

  • Selected — Project ビューで選択中の EventMap だけ
  • All in Projectt:HapbeatEventMap で project 全体を一括書き出し

詳細: AI 支援ワークフロー


ユーザーが触ってよい範囲の診断ユーティリティ。バグ報告時に Logs を添付してもらうのが推奨フローです。

Attach Event Logger to Selected / Remove Event Logger Wiring from Selected

Section titled “Attach Event Logger to Selected / Remove Event Logger Wiring from Selected”

選択中 GameObject の UnityEvent (XR Interactable の selectEntered など) を Console にログ出力する補助配線を追加 / 解除します。

何が起きているか可視化したい時、Trigger を仕込む前の発火タイミング確認に便利。AI 支援で wiring を組むときも、まずこれで「どのイベントがいつ飛ぶか」を観察すると設計がブレません。詳細: AI 支援ワークフロー

Hapbeat 系のログ (Console 出力 + 実行イベント) をファイルに記録する機能群。

メニュー用途
Start Recordingフィルタ済みログのファイル記録を開始
Stop Recording記録を停止し、ファイルを Explorer/Finder で表示
Reveal Current File記録中ファイルを Explorer/Finder で表示 (記録中のみ有効)
Open Logs Folder過去のログを集めてあるフォルダを開く
Dump Last Recording to Console直近のログを Console に書き出す (記録停止後の確認用)

バグ報告のおすすめフロー:

  1. Logs/Start Recording を実行
  2. 再現手順を実行 (Play → 問題発生 → Stop)
  3. Logs/Stop Recording で保存 → ファイルを Issue / DM に添付

Edit-mode で開いている UDP / mDNS transport を強制クローズします。「Play モードに入る前から接続テストしたい」「ポートが掴まれっぱなしで Play できない」などのレアケース用。

通常は触る必要はありません。


SDK 開発者向け。end-user の UPM Git URL / registry / tarball install では HapbeatDevModeMenuGate により非表示になり、メニュー自体が現れません。

Basic Example サンプル一式 (Kit / EventMap / Scene) を Assets/HapbeatSDK/SDK_Samples/BasicExample/ に scaffold します。Package Manager で Basic Example を Import 済みであることが前提。

End user は Package Manager の Sample Import で直接 Scene を開けるため、このメニューは通常不要です。

Sync HapbeatSDK → Samples~ (Showcase) / (BasicExample)

Section titled “Sync HapbeatSDK → Samples~ (Showcase) / (BasicExample)”

Assets/HapbeatSDK/SDK_Samples/<sample>/ で編集した Scene / EventMap / Animation を package の Samples~/<sample>/ に書き戻します。SDK 自体を編集している人向けの maintainer 専用コマンド。


ScriptableObject 生成 (Assets/Create/Hapbeat/)

Section titled “ScriptableObject 生成 (Assets/Create/Hapbeat/)”

Project ビューの右クリック → Create → Hapbeat:

項目用途
ConfigHapbeatConfig.asset (接続設定の置き場)
Event MapHapbeatEventMap.asset (Event ID 一覧の置き場)

生成位置: 右クリックしたフォルダの直下。プロジェクトに 1 つあれば足りる ため、Assets/HapbeatSDK/EventMaps/ 配下に置くのを推奨。


コンポーネント (Add Component → Hapbeat/)

Section titled “コンポーネント (Add Component → Hapbeat/)”

GameObject の Inspector → Add Component → 検索欄に Hapbeat:

コンポーネント用途
Hapbeat Collision Trigger物理衝突 / Trigger Enter / Exit で発火
Hapbeat Sequence Triggergrab / hold / release を 1 component で扱う
Hapbeat Tick Emitter連続値 (Slider 等) の変化量に応じてスナップ触覚
Hapbeat Unity Event TriggerUnityEvent の Fire() メソッドから任意発火
Hapbeat Parameter BindingTransform / Rigidbody → gain / pan のリアルタイムマッピング
Hapbeat Action HelperStop / StopAll / Ping を UnityEvent から呼ぶラッパ
Hapbeat Event LoggerUnityEvent 発火を Console に流す (Debug 用)
Hapbeat Key Dispatcherキー押下を UnityEvent にマップ (sample / proto 用)
Hapbeat Status Overlay接続状態と Log を Canvas に表示

Animator state からの発火は HapbeatStateBehaviour を使います。これは StateMachineBehaviour なので、GameObject の Add Component ではなく Animator window で state を選択 → Inspector → Add Behaviour から追加します。詳細: Trigger コンポーネント

詳細: Trigger コンポーネント / Parameter Binding