Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Nakaji Kohki / なかじ 略歴: CyberAgent → メルカリ R4D XR → 現在 ・日本VR学会認定 上級VR技術者 ・専門学校の先生(VRエンジニア専攻) ・Podcast『xR.fm』のパーソナリティ ・エンジニア系勉強会のオーガナイザー Twitter: @nkjzm Unity / VR Engineer

Slide 3

Slide 3 text

個人開発している『Vフレット』の紹介 ● ギターに合わせてアバターで弾き語りができるアプリ ○ アバターはVRMに対応 ○ MMD的な使い方も想定 ● ロゴ作ってもらいました🙏 ⏩ 今日はVフレットを作ってる時に生まれたアセットを紹介

Slide 4

Slide 4 text

『UniHambarger』の紹介 ● メニューからゲーム中のパラメータを操作できるアセット ● メイン画面を表示したまたオーバーレイ表示できる ○ リアルタイムの プレビューが可能 ● 向いてそうなプロジェクト ○ ツール系アプリ ○ リアルタイム系ゲーム

Slide 5

Slide 5 text

GitHubで公開予定です🚀 https://github.com/nkjzm/UniHamburger ● Package Managerで導入可能 ● Required: UniRx(今日は説明省きます🙏) ● 今月中に公開予定

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

要素の追加はワンライナー(1/2) ● CreateIntItem()メソッドを呼び出しで追加 ● IObservableで変更を取得できる ○ 途中の結果も取れるので便利 ○ 最後の結果だけ欲しかったら Throttle が使える elementController .CreateIntItem("スライダー(int)", 1, min: -10, max: 10) .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);

Slide 9

Slide 9 text

要素の追加はワンライナー(2/2) 以下の要素に対応 ● Slider ○ Int ○ Float ● Dropdown ○ String[] ○ Enum ● Toggle(bool)

Slide 10

Slide 10 text

Enumのドロップダウン化が便利 ● Enumを渡すと全要素を Dropdownとして表示 ● C# 7.3からGeneric制約に Enumが使えるようになった (多分Unity2018後半くらいから) elementController .CreateEnumItem("好きなフルーツ", (int) Fruit.Grape) .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);

Slide 11

Slide 11 text

パラメータの保存機能 ● 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);

Slide 12

Slide 12 text

細かい便利機能 ● ラベルの詳細書ける ○ 名前付き引数で指定 ● 呼び出し元から非アクティブにできる→ ● パラメータのリセット機能 elementController .CreateIntItem("スライダー", 1, description: "こんな感じで説明書けるよ") .Subscribe(value => Debug.Log($"ログ出力: {value}")).AddTo(this);

Slide 13

Slide 13 text

最後に ● UniHamburgerは近日中リリース予定 ○ https://github.com/nkjzm/UniHamburger ● Vフレットもそのうち出すのでお楽しみに (ハッシュタグ: #Vフレット) ● Twitterもフォローしてもらえると嬉しいです! (Twitter: @nkjzm)

Slide 14

Slide 14 text

フォロー & チャンネル登録 お願いします!! ありがとうございました!! @nkjzm VRエンジニアなかじ

Slide 15

Slide 15 text

No content