やらなイカ?

たぶん、iOS/Androidアプリの開発・テスト関係。

Unity++ 〜ショートセッション勉強会 presented by Unity部〜 #unity_pp に行ってきました

7/20(土)に開催された『Unity++ 〜ショートセッション勉強会 presented by Unity部〜』に行ってきました。

meetup.unity3d.jp

主催は日本Androidの会Unity部さん*1、会場はGINZA SIXのユニティ・テクノロジーズ・ジャパンさん。 スライドや動画は後日ユニティ・ジャパンさんのUnity Learning Materialsで配信されると思いますので、ごく簡単に。

Democratized Unity Package Manager

speakerdeck.com

  • Unity 2019.1からUnity Package Manager Scoped Registryが使えるようになった
  • Unity Package Managerは2017.2から導入
  • パッケージには4種類ある
    • 公式/verified
    • 公式/preview
    • 公式/built-in
    • 非公式 ← これを扱いやすくなった! 民主化
  • Package Name: reverse domain記法
  • Version: semver形式、previewもここで表現
  • Unity Version: 最低ver*2
  • Dependencies: 依存パッケージ
  • Registory: npm仕様
  • Scoped registory
    • package nameのスコープごとにRegistryを切り替えられる((uplinksで上位のレジストリを書くことでカスケードにもできるが、Scopedでのほうが様々な構成に対応できる)) -VerdaccioというOSSで簡単に立てられる
  • Package Manager UIには表示できないのでPackages/manifest.json直書きする
    • Removeはできる
  • Packageを作る
    • Assets/直下にpackage.jsonを置く
    • README.mdとかもAssets/直下に置く
    • asmdef必須
    • Documentation~直下に置くとメタファイルがつくられないのでべんり
    • Test Assembryがコンパイルされないバグ
  • 公開する
    • 認証を通す
    • ROOT/.npmrmにレジストリURLなどを書いておくと便利
    • $ npm publish
  • 詳しくはUNIBOOK 11(C96 4日目 南リ45a)で!
  • upm-packages.dev を立てた*3
  • Command line interface for Unity Package Manager を作った

補足

よーし、パパ Cinemachineを2Dプロジェクトに適応して遊んじゃうぞー

speakerdeck.com

  • プレイヤーにカメラを追従させる処理 → 親子にするなどで実現はできる
  • いい感じにしたい → Cinemachine
  • Unity 2017から、Package Managerでインストール可能
  • 遅延移動、プレイヤーの動きを先読み
  • 特定の範囲から外を見せたくない
    • コライダを設定できる
  • 複数カメラの切り替え、ブレンド
  • 複数ターゲットを収める(拡大縮小して収める): Target Group
  • カメラシェイク: Impuls Listener
  • ドキュメント充実してる+テラシュールブログも参考
  • [非公式] Unite Tokyo 2019 Eve2 LT Fes - connpassが8/2募集開始なのでよろしく

アクションゲームにおけるポーズ系演出の難しさと解決法

Preview機能のプレビュー 公式Localizationパッケージの今

Unity開発者が知っておきたい.NETのこと

speakerdeck.com

  • Scripting Backend
    • .NET 4.xが使える
  • Compatibility
    • .NET 4.x: dll大きい。動かないAPIもある
    • .NET Standard 2.0: dll小さい
  • .NET実装: ランタイム+クラスライブラリ
  • .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に発売されます

Unityサウンド エキスパート養成講座

Unityサウンド エキスパート養成講座

UniTask入門

speakerdeck.com

  • コルーチンの置き換え、戻り値を返せる
  • C#のTaskより軽い
  • UniRxよりはわかりやすい
  • C# 7以降
  • 生成
    • asyncの戻り
      • async UniTaskVoid: async voidの代わりに使える
    • UniTaskCompletionSource
    • (UniRxの)Observableから変換する
      • 必ず完了するObservableであること
      • ToObservableするとメインスレッドで動く
  • UniTask.Run, UniTask.Delayとか
  • UniTask.WhenAll: 型が違っても待てる
  • WhenAny: どれかひとつ終わったら抜ける
  • Awaiter
    • GetAwaiter()が生えてればawaitできる。拡張メソッドでもok
    • UniTaskはいろいろ提供している
  • UniTask.ToCoroutineでコルーチンに変換できる
  • SceneManager.LoadSceneAsync()とかを待てる
  • progressも取れる
  • OnCollisionEnterとかも
  • コルーチンの上位互換として使える
  • UniTask Tracker
  • UniTaskとキャンセル
    • CancellationToken
      • GetCancellationOnDestroy() べんり
    • OperationCanceledException: 投げるとUniTaskは「キャンセル状態」になる
      • エラーログには出ない
      • 外部からキャンセル要求があったとき
      • 下流で投げたら上までスルーして伝えること
      • 悪用しないこと
  • 標準Taskは必要がなければ使わないでok
  • Observable: イベント処理、結果が複数になるなら使う

カシスちゃんのグッズ発売中

所感

Unityはできることが多く、普段触らない分野の知識はなかなか入ってこないので、Gotanda.unityRoppongi.unityのようなLT、また今回のようなショートセッション形式で色々聞ける勉強会というのはとてもありがたいです。

似たようなインプットとしては、Unity Pro Tipsのメールマガジンもいいですね。ちょうど先日Cinemachineの記事を読んで興味を持っていたところでした。

いつもながら、企画・運営、そして登壇者のみなさんには感謝。

*1:当時、雨後の筍のようにたくさんあった「部」の数少ない生き残り。テスト部とか酒部とかVR部とかありました

*2:休憩のとき聞きましたが、rangeでは指定できないそうです

*3:ちょうど個人的に、ローカルにVerdaccio立ててもUnity Cloud Buildから使えないしなーと考えていたところだったので、使わせてもらおうかと