Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger

3009eedce0d0f7ae45987a7bd8f57b85?s=47 Nakaji Kohki
September 22, 2021

Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger

2021.09.22開催のGotanda.unity #20 にて使用した発表資料です。
https://meetup.unity3d.jp/jp/events/1325

Twitter: https://twitter.com/nkjzm

3009eedce0d0f7ae45987a7bd8f57b85?s=128

Nakaji Kohki

September 22, 2021
Tweet

Transcript

  1. Unityで使える汎用的な ハンバーガーメニューの実装 2021/09/22 Gotanda.unity #20

  2. Nakaji Kohki / なかじ 略歴: CyberAgent → メルカリ R4D XR

    → 現在 ・日本VR学会認定 上級VR技術者 ・専門学校の先生(VRエンジニア専攻) ・Podcast『xR.fm』のパーソナリティ ・エンジニア系勉強会のオーガナイザー Twitter: @nkjzm Unity / VR Engineer
  3. 個人開発している『Vフレット』の紹介 • ギターに合わせてアバターで弾き語りができるアプリ ◦ アバターはVRMに対応 ◦ MMD的な使い方も想定 • ロゴ作ってもらいました🙏 ⏩

    今日はVフレットを作ってる時に生まれたアセットを紹介
  4. 『UniHambarger』の紹介 • メニューからゲーム中のパラメータを操作できるアセット • メイン画面を表示したまたオーバーレイ表示できる ◦ リアルタイムの プレビューが可能 • 向いてそうなプロジェクト

    ◦ ツール系アプリ ◦ リアルタイム系ゲーム
  5. GitHubで公開予定です🚀 https://github.com/nkjzm/UniHamburger • Package Managerで導入可能 • Required: UniRx(今日は説明省きます🙏) • 今月中に公開予定

  6. UniHambargerの特徴 1. uGUIベースで簡単に導入できる 2. 要素の追加はワンライナー 3. Enumのドロップダウン化が便利 4. パラメータの保存機能付き

  7. uGUIベースで簡単に導入できる 導入手順 1. Packmanでインポート 2. プレハブをシーンに配置する 3. 設定したい要素を追加していく uGUIベースだからカスタマイズが可能 •

    見た目の調整がしやすい • 要素のプレハブもカスタマイズ可能
  8. 要素の追加はワンライナー(1/2) • CreateIntItem()メソッドを呼び出しで追加 • IObservableで変更を取得できる ◦ 途中の結果も取れるので便利 ◦ 最後の結果だけ欲しかったら Throttle

    が使える elementController .CreateIntItem("スライダー(int)", 1, min: -10, max: 10) .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);
  9. 要素の追加はワンライナー(2/2) 以下の要素に対応 • Slider ◦ Int ◦ Float • Dropdown

    ◦ String[] ◦ Enum • Toggle(bool)
  10. Enumのドロップダウン化が便利 • Enumを渡すと全要素を Dropdownとして表示 • C# 7.3からGeneric制約に Enumが使えるようになった (多分Unity2018後半くらいから) elementController

    .CreateEnumItem<Fruit>("好きなフルーツ", (int) Fruit.Grape) .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);
  11. パラメータの保存機能 • Saltとラベル名をキーにしてパラメータの保存ができる ◦ Saltはキャラ毎の設定保存に便利 • 気軽に追加してそこそこの使い勝手を実現 // saltとラベル名からkeyを生成 var

    key = KeyGenerator.CreateKey(salt, label); // 保存された値の取得 currentValue = new IntReactiveProperty(PlayerPrefs.GetInt(key, defaultValue)); // 変更される度に値を保存 currentValue.Subscribe(index => PlayerPrefs.SetInt(key, index)).AddTo(this);
  12. 細かい便利機能 • ラベルの詳細書ける ◦ 名前付き引数で指定 • 呼び出し元から非アクティブにできる→ • パラメータのリセット機能 elementController

    .CreateIntItem("スライダー", 1, description: "こんな感じで説明書けるよ") .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);
  13. 最後に • UniHamburgerは近日中リリース予定 ◦ https://github.com/nkjzm/UniHamburger • Vフレットもそのうち出すのでお楽しみに (ハッシュタグ: #Vフレット) •

    Twitterもフォローしてもらえると嬉しいです! (Twitter: @nkjzm)
  14. フォロー & チャンネル登録 お願いします!! ありがとうございました!! @nkjzm VRエンジニアなかじ

  15. None