勉強会のレポート(メモ)です。
参加したのはこちら「Gotanda.unity #17」
五反田発祥のUnityに関するLT会です。
アーカイブはこちら
togetterまとめはこちら
- LT#1 (スポンサー枠) もんりぃ先生: Unityプロジェクトの基盤・設計まわりでしくじってしまった話
- LT#2 かこ: もう泣かない,UIの自動レイアウト活用
- LT#3 Kuniwak: Unity の meta ファイルの過不足の merge を防止しよう
- LT#4 40: Unityでアクションゲームのあれこれを実装してみる
- LT#5 いも: どこのご家庭にもある自作シーンマネージャーの話
- LT#6 (スポンサー枠) やまたく: ごっこランドでみかける2Dアニメーション
- LT#7 うどん: Unity+Airtest入門 ~Unityでお手軽実機の自動テスト~
- LT#8 きゅぶんず: Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
- LT#9 ゆーじ: 知らなかった!DOTween便利Tips集
- スポンサー紹介
- 次回予告
LT#1 (スポンサー枠) もんりぃ先生: Unityプロジェクトの基盤・設計まわりでしくじってしまった話
本日の資料です。https://t.co/ibJ9B7kQmA
— もんりぃ先生 (@monry) 2021年3月24日
#gotandaunity
今回は、ごっこランドを開発運営してきて「ミスったなぁ」っていうようなモノ、
それがどうすべきなのか、どう対応したのかについてお話します。
Unityのバージョン
長いこと5.3で固定していた、2017の後半でアプデが必要になりめちゃめちゃ苦労した。
こまめにUnityのバージョンを上げましょう。キッズスターでは年号単位で上げていっています。
プロジェクトのサイズ
どんどん肥大化しアセットのインポート時間やコンパイルの時間が長くなった。
(特殊な事例ですが)リポジトリを分割し、製品版のビルドにはスクリプトのみ入るようにし他は全部AssetBundleで提供。
パッケージ管理
自社ライブラリを細かく分割して管理。UPMがなかったためnpmを使ってインストール
→ライブラリ間の依存関係が複雑に
モノレポ化で解消。Unity2018以降を使っている場合はUPMを使った方がいい
ライブラリの選定
流行に飛びつくことをしてしまった→使えなくなったりアプデできなくなったりした
本当に必要か考えましょう
リソースの管理
オレオレAssetBundleを作ったけどパフォーマンスが微妙だった。元に戻すのも苦労した。
公式の機能を使いましょう。現時点であればAddressablesでいい。
アーキテクチャ
過去にClean ArtchitectureについてLTなりしてきましたが、独自解釈をしすぎていてあまり信用しない方がいい
ここに関してはとりすーぷさんのこちらがオススメ
本当にプロダクトにあっているアーキテクチャなり設計を選定してライブラリを管理するのがいい
ここに正解・最適解はないので、プロダクトやチームによって話し合って見つけるのが肝要
まとめ
・Unityの公式の機能にどんどん乗っかれるようにしておくのがよい
・設計やアーキテクチャはプロダクトやチームにあったものを採択する
LT#2 かこ: もう泣かない,UIの自動レイアウト活用
Unityのアスペクト比を変えたときにUIがおかしくなると泣いちゃいますよね。それを共有します。
今回のゴールはFreeAspectでも正常にスクロールするメニューをLTを見るだけで作れるようにすることです。
Gif付の解説がメインのため、動画をごらんください。
LT#3 Kuniwak: Unity の meta ファイルの過不足の merge を防止しよう
先ほどの Gotanda.unity の発表資料です:「Unity の meta ファイルの過不足の merge を防止しよう」 https://t.co/fOKbv675zT #gotandaunity
— Kuniwak (@orga_chem) 2021年3月24日
.metaファイルの過不足をストレスなく見つけるツールを作ったお話
.metaファイルに過不足があると
.meraファイルをcommitし忘れる
.metaファイルがないと新たに.metaファイルが生成される。(GUIDが再割り当てされる)
GUIDの参照が切れてマテリアルなどがバグる
.metaファイルを消し忘れる
毎回関係ない差分が出てきてうざい
このツールを使うと、コミット時にcommitされていないファイル・消されていないファイルを表示してくれる。
Githubの機能を使うとマージできないようになります。
ただし検査に時間がかかるとストレスになるのでストレスがないように開発しています。
Jenkinsは甘くはない
Jenkins上で生成されたアセットに.metaファイルがない、
そうなるとJenkinsが勝手に差分をマージされ、.metaファイルが欠けたりしてしまう
→簡易的にautofix機能を入れて解決
運用してわかったこと
.meta過不足問題は誰も悪くなかった
UnityやGitの仕様に翻弄されているだけ
LT#4 40: Unityでアクションゲームのあれこれを実装してみる
プロジェクトはこちら
こんなのを作りました。
次回のgotanda.unityでこれの作り方を話します #gotandaunity pic.twitter.com/F6FzLIFr6n
— 40 (@dr40san) 2021年3月5日
ヒットストップとカメラシェイクの二つをのせています。
ヒットストップ
攻撃を与えたものと与えた対象を一定時間止めること
画面全体を止めない事。
完全に止めないこと(処理落ちっぽくなるため)
Unityで実装する場合
攻撃ヒット時にAnimatorのSpeedを0.02にして遅くします。
カメラシェイク
攻撃がヒットした時にカメラが揺れること
・カメラと視点両方を揺らす
・縦横両方に揺らす
・揺らしすぎない
Unityで実装する場合
CinemachineとAnimatorを使います。
CinemachineのFollowとLookAtを設定します。(Followの子にLookAtを設定)
あらかじめ均等詰めびランダムな動きをするAnimationClipを作成しておきます。
AnimatorにTriggerを設定し、攻撃ヒット時再生するようにします。
まとめ
・ヒットストップ実装のコツは画面を止めない事と完全に止めない事
・カメラシェイク実装のコツは、カメラと視点両方を揺らすこと、縦横両方に揺らすこと、揺らしすぎない事
LT#5 いも: どこのご家庭にもある自作シーンマネージャーの話
このあと話すやつの死霊です
— いも (@adarapata) 2021年3月24日
「どこのご家庭にもあるシーンマネージャーの話」#gotandaunity https://t.co/DoelnU43ih
毎回作るのに全然情報がでないシーンマネージャーに関するお話。
スライドが多いので動画をごらんください。
LT#6 (スポンサー枠) やまたく: ごっこランドでみかける2Dアニメーション
今回はキッズスターのこだわりでもある、子どもに寄り添った絵作りアニメーションについてお話します。
ごっこランドのアニメーション
キッズスターのアニメーターチームはこどもxあそびxまなびを意識しています。
あそび:動いているものと反応
まなび:わかりやすい展開と表現
こども:あそびとまなびを体験してお仕事自体を楽しんでもらう
さわることで起こる、移動/変形/エフェクト/音など、これらはUnityと相性がよい
ごっこランドのガイドの意識
大人の考えるチュートリアルは使えない
・動いているものに興味をもってもらいガイドで導く、画面は止めない
・画像やガイドも統一
始点と終点がインタラクティブに変化するガイド
Constraintで対応しました。
始点と終点をConstraintで高速して、Weight値で引っ張るようにしました。
Constraintについては過去にも登壇したことがあります。
ところが敵はまだまだ出現する
キッズスターでは常に人材を募集しています
LT#7 うどん: Unity+Airtest入門 ~Unityでお手軽実機の自動テスト~
こちら登壇資料です!Airtestの良さが皆さんに伝われば嬉しい限りです!https://t.co/9UMlRuIeLm#gotandaunity #unity
— うどん@げーむつくるしごと (@udon_qu) 2021年3月24日
今回はAirtestとPocoの紹介をします。
Airtestとは
NetEase社のモバイルゲーム向け自動テスト用フレームワーク
タップやスワイプなどのUI操作や画像ベースのUI操作を簡単にできる
IDEも公式で用意されていてAPIもとてもシンプル
Pocoとは
NetEase社のUI自動テスト用フレームワーク
Unity、COCOSなどに対応
ヒエラルキー解析によるUI処理ができる(HierarchyのGameObjectを取得しタップするなど)
AirTestの使い方についてはスライドをどうぞ
まとめ
めちゃくちゃ便利です。UIのテストが直感的に実装できます。
ヒエラルキーベースのテストが優秀。
会社ではチュートリアルの自動テストや多人数が必要な機能のテストに使用しています。
ドキュメント
Qiitaも書いています
LT#8 きゅぶんず: Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
本日の講演資料です!講演動画もすぐに公開予定!#gotandaunity
— きゅぶんず (@kyubuns) 2021年3月24日
> Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!? by @kyubuns #adobexd #unity https://t.co/eyE77PqU6U @SlideShareより
頭に思い浮かんだUIを素早くUnity上で表示させる方法だったり、UIを変更するサイクルを高速化する方法についてお話します。
Adobe XDとは
Adobe製のUI/UXデザインツールです。UIを作るためだけに作られた専用のツール。
無料プランもありWindowsでもmacOSでも動きます。
AkyuiUnity.Xd
あわせて紹介するのがAkyuiUnity.Xdというライブラリ
MITライセンスで使えるXDからUnityに変換してくれるライブラリです。
ここで動作デモ
動画をご覧ください
AnKuchen
生成されたPrefabを扱うオススメライブラリ
Scriptから文字列指定でGameObject、Componentを取ってこれる。
まとめ
今日発表した仕組みを使うことで、画面を素早く作って素早く試せる
変更したい箇所が出てもXD上で編集してボタンで反映、開発サイクルを高速化できる
もっと知りたい方向けに解説動画を上げています
LT#9 ゆーじ: 知らなかった!DOTween便利Tips集
ひさびさのLTで緊張しました!
— ゆーじ (@yuji_ap) 2021年3月24日
LT資料です#gotandaunityhttps://t.co/jxzRXo6qLx
便利だけど知らない人がいそうなDOTweenの機能をパパっと7つ紹介します
Tips 1: 秒数に0を指定する→DOMoveの引数にそのまま0を渡す
Tips 2:相対的な値を指定する→オプションにSetRelative(true)をつなげる
Tips 3:timescaleを無視する→オプションにSetUpdate(true)をつなげる
Tips 4:開始時の値を指定する→オプションにFrom()をつけると開始時の値を指定できる
Tips 5:一定時間後に処理実行する→DOVirtual.DelayCall()で実現できる
Tips 6:共通のパラメータを使う→
TweenParams型の変数にオプションをメソッドチェーンでつなげることで、
パラメータのプリセットのようなものが作れるSetAsでTweenに適用できる
Tips 7:往復アニメーション→SetLoops(2, LoopType.Yoyo)を指定することで
行って戻ってくるアニメーションができる
まとめ
DOTweenは便利な使い方がたくさんあります
公式ドキュメントを見るだけでも新たな発見があるかも
スポンサー紹介
キッズスター
ごっこランドを作成しています。
お陰様で大好評です。エンジニア絶賛大募集中なのでWantedlyか@monryまでどうぞ
ワンダープラネット
シンプルだけど奥深い事業をしています。
グローバル展開を行う専用のスタジオがあります。
エンジニア募集中なので興味のあるかたはこちらからどうぞ。
次回予告
次回は5月開催を予定しているとのこと
以上です
間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。