7/20(土)に開催された『Unity++ 〜ショートセッション勉強会 presented by Unity部〜』に行ってきました。
主催は日本Androidの会Unity部さん*1、会場はGINZA SIXのユニティ・テクノロジーズ・ジャパンさん。 スライドや動画は後日ユニティ・ジャパンさんのUnity Learning Materialsで配信されると思いますので、ごく簡単に。
Democratized Unity Package Manager
- Unity 2019.1からUnity Package Manager Scoped Registryが使えるようになった
- Unity Package Managerは2017.2から導入
- パッケージには4種類ある
- Package Name: reverse domain記法
- Version: semver形式、previewもここで表現
- Unity Version: 最低ver*2
- Dependencies: 依存パッケージ
- Registory: npm仕様
- Scoped registory
- Package Manager UIには表示できないのでPackages/manifest.json直書きする
- Removeはできる
- Packageを作る
- 公開する
- 認証を通す
- ROOT/.npmrmにレジストリURLなどを書いておくと便利
- $ npm publish
- 詳しくはUNIBOOK 11(C96 4日目 南リ45a)で!
- upm-packages.dev を立てた*3
- Command line interface for Unity Package Manager を作った
補足
こないだの勉強会で Verdaccio は /-/all が無い的なことを言ったな。アレは嘘だ。
— もんりぃ先生📔マンガでわかる Unity 連載中 (@monry) July 22, 2019
ストレージプラグインに Google Cloud のヤツを使うとダメだったらしいので、デフォルトの設定に戻しつつ、gcsfuse 使って GCS の Bucket をマウントするようにしたら、問題なく動くようになった! pic.twitter.com/Eq1cwvG2YF
よーし、パパ Cinemachineを2Dプロジェクトに適応して遊んじゃうぞー
- プレイヤーにカメラを追従させる処理 → 親子にするなどで実現はできる
- いい感じにしたい → Cinemachine
- Unity 2017から、Package Managerでインストール可能
- 遅延移動、プレイヤーの動きを先読み
- 特定の範囲から外を見せたくない
- コライダを設定できる
- 複数カメラの切り替え、ブレンド
- 複数ターゲットを収める(拡大縮小して収める): Target Group
- カメラシェイク: Impuls Listener
- ドキュメント充実してる+テラシュールブログも参考
- [非公式] Unite Tokyo 2019 Eve2 LT Fes - connpassが8/2募集開始なのでよろしく
アクションゲームにおけるポーズ系演出の難しさと解決法
- ストリートファイターのクリティカルアーツ: 相手が止まる
- サムスピ零Special: 相手が1/4スロー
- Chronos Time Control
- GameObjectにTimelineをアタッチしておいて制御
- UNIBOOK 11に歴用例が載る
Preview機能のプレビュー 公式Localizationパッケージの今
- UDP(Unity Distribution Portal) がはじまった
- サードパーティAndroidストア(野良ストア)に配信できるサービス
- Catappult(EMEA, Brazilほか
- MOO Store(東南アジア
- ONE Store(韓国
- Jio Games Store(インド
- HTC VIVEPORT
- きっとローカライズを迫られる
- Unity公式でローカライズ機能を開発中。Addressableをフル活用
- Localization packages
- 0.4.0-preview
- Unity 2019.1以上
- Forumの中にリリース告知スレッドがあるので一番下を参照
- テーブルで管理できるもの
- Audio clip
- Sprite
- String
- Texture
- Text > 歯車 > "Localize"
- Localize Stringコンポーネントが追加される
- まだ言語ごとにフォントは選べない
Unity開発者が知っておきたい.NETのこと
- Scripting Backend
- .NET 4.xが使える
- Compatibility
- .NET 4.x: dll大きい。動かないAPIもある
- .NET Standard 2.0: dll小さい
- .NET実装: ランタイム+クラスライブラリ
- .NET Framework, .NET Core, Mono, UWP, Xamarin
- .NET Standard: 仕様・規格
Unity サウンドTips 2019
www.slideshare.net
- 基礎的なことは 【Unite Tokyo 2018】Audio機能の基礎と実装テクニック 参照
- Unityはサウンドエフェクトがややムズ
- Audio Mixer とっつきにくいけど優秀
- VR特有
- 指向性:位置情報、直接音:パンニング、初期反射、
- 360度から聞こえる音:ambisonics
- VRサウンドSDK多すぎ問題:Oculus Audio SDKがほぼ正解
- 罠: OculusSpatializerUnityコンポーネント
- 単位がフィート
- 処理はそれなりに重い。無理に使わなくてもパンニング+距離減衰だけでいいことも
- CRI ADX2
- 法人向け有償版、個人開発者向けLE
- Audio DSP Graph
- previewですらない。Megacityデモからコード抜いて調べた
- 2-3年先では
書籍が8/27に発売されます
- 作者: 一條貴彰,株式会社CRI・ミドルウェア,佐藤英一
- 出版社/メーカー: ボーンデジタル
- 発売日: 2019/08/27
- メディア: 単行本
- この商品を含むブログを見る
UniTask入門
- コルーチンの置き換え、戻り値を返せる
- C#のTaskより軽い
- UniRxよりはわかりやすい
- C# 7以降
- 生成
- asyncの戻り
- async UniTaskVoid: async voidの代わりに使える
- UniTaskCompletionSource
- (UniRxの)Observableから変換する
- 必ず完了するObservableであること
- ToObservableするとメインスレッドで動く
- asyncの戻り
- UniTask.Run, UniTask.Delayとか
- コンテキストスイッチにも使える
- UniTask.Yield: yieldしてupdateで再開される
- とか
- UniTask.WhenAll: 型が違っても待てる
- WhenAny: どれかひとつ終わったら抜ける
- Awaiter
- GetAwaiter()が生えてればawaitできる。拡張メソッドでもok
- UniTaskはいろいろ提供している
- UniTask.ToCoroutineでコルーチンに変換できる
- SceneManager.LoadSceneAsync()とかを待てる
- progressも取れる
- OnCollisionEnterとかも
- コルーチンの上位互換として使える
- UniTask Tracker
- UniTaskとキャンセル
- CancellationToken
- GetCancellationOnDestroy() べんり
- OperationCanceledException: 投げるとUniTaskは「キャンセル状態」になる
- エラーログには出ない
- 外部からキャンセル要求があったとき
- 下流で投げたら上までスルーして伝えること
- 悪用しないこと
- CancellationToken
- 標準Taskは必要がなければ使わないでok
- Observable: イベント処理、結果が複数になるなら使う
カシスちゃんのグッズ発売中
「カシス」アクリルキーホルダー | torisoup https://t.co/ALDw6DpRnC #booth_pm
— とりすーぷ (@toRisouP) July 12, 2019
販売中です!!!
所感
Unityはできることが多く、普段触らない分野の知識はなかなか入ってこないので、Gotanda.unity、Roppongi.unityのようなLT、また今回のようなショートセッション形式で色々聞ける勉強会というのはとてもありがたいです。
似たようなインプットとしては、Unity Pro Tipsのメールマガジンもいいですね。ちょうど先日Cinemachineの記事を読んで興味を持っていたところでした。
いつもながら、企画・運営、そして登壇者のみなさんには感謝。