Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【勉強会レポ】: Gotanda.unity #17

勉強会のレポート(メモ)です。
参加したのはこちら「Gotanda.unity #17」

meetup.unity3d.jp

ハッシュタグ : #gotandaunity

五反田発祥のUnityに関するLT会です。

 f:id:Raspberly:20210114033040p:plain

アーカイブはこちら

www.youtube.com

 

togetterまとめはこちら

togetter.com

 

 

 

LT#1 (スポンサー枠) もんりぃ先生: Unityプロジェクトの基盤・設計まわりでしくじってしまった話

今回は、ごっこランドを開発運営してきて「ミスったなぁ」っていうようなモノ、
それがどうすべきなのか、どう対応したのかについてお話します。

Unityのバージョン

長いこと5.3で固定していた、2017の後半でアプデが必要になりめちゃめちゃ苦労した。
こまめにUnityのバージョンを上げましょう。キッズスターでは年号単位で上げていっています。

プロジェクトのサイズ

どんどん肥大化しアセットのインポート時間やコンパイルの時間が長くなった。
(特殊な事例ですが)リポジトリを分割し、製品版のビルドにはスクリプトのみ入るようにし他は全部AssetBundleで提供。

パッケージ管理

自社ライブラリを細かく分割して管理。UPMがなかったためnpmを使ってインストール
→ライブラリ間の依存関係が複雑に

モノレポ化で解消。Unity2018以降を使っている場合はUPMを使った方がいい

ライブラリの選定

流行に飛びつくことをしてしまった→使えなくなったりアプデできなくなったりした
本当に必要か考えましょう

リソースの管理

オレオレAssetBundleを作ったけどパフォーマンスが微妙だった。元に戻すのも苦労した。
公式の機能を使いましょう。現時点であればAddressablesでいい。

アーキテクチャ

過去にClean ArtchitectureについてLTなりしてきましたが、独自解釈をしすぎていてあまり信用しない方がいい
ここに関してはとりすーぷさんのこちらがオススメ

learning.unity3d.jp

本当にプロダクトにあっているアーキテクチャなり設計を選定してライブラリを管理するのがいい
ここに正解・最適解はないので、プロダクトやチームによって話し合って見つけるのが肝要

まとめ

・Unityの公式の機能にどんどん乗っかれるようにしておくのがよい
・設計やアーキテクチャはプロダクトやチームにあったものを採択する

 

 

 

 

LT#2 かこ: もう泣かない,UIの自動レイアウト活用

Unityのアスペクト比を変えたときにUIがおかしくなると泣いちゃいますよね。それを共有します。
今回のゴールはFreeAspectでも正常にスクロールするメニューをLTを見るだけで作れるようにすることです。

 

Gif付の解説がメインのため、動画をごらんください。

 

 

 

 

LT#3 Kuniwak: Unity の meta ファイルの過不足の merge を防止しよう

.metaファイルの過不足をストレスなく見つけるツールを作ったお話

 

.metaファイルに過不足があると

.meraファイルをcommitし忘れる

.metaファイルがないと新たに.metaファイルが生成される。(GUIDが再割り当てされる)
GUIDの参照が切れてマテリアルなどがバグる

.metaファイルを消し忘れる

毎回関係ない差分が出てきてうざい

 

このツールを使うと、コミット時にcommitされていないファイル・消されていないファイルを表示してくれる。
Githubの機能を使うとマージできないようになります。
ただし検査に時間がかかるとストレスになるのでストレスがないように開発しています。

Jenkinsは甘くはない

Jenkins上で生成されたアセットに.metaファイルがない、
そうなるとJenkinsが勝手に差分をマージされ、.metaファイルが欠けたりしてしまう
→簡易的にautofix機能を入れて解決

運用してわかったこと

.meta過不足問題は誰も悪くなかった
UnityやGitの仕様に翻弄されているだけ

 

今回紹介したツールはDeNAOSSとして公開しています

github.com

 

 

 

 

 

LT#4 40: Unityでアクションゲームのあれこれを実装してみる

プロジェクトはこちら

github.com

 

こんなのを作りました。

ヒットストップとカメラシェイクの二つをのせています。

ヒットストップ

攻撃を与えたものと与えた対象を一定時間止めること

画面全体を止めない事。
完全に止めないこと(処理落ちっぽくなるため)

Unityで実装する場合

攻撃ヒット時にAnimatorのSpeedを0.02にして遅くします。

カメラシェイク

攻撃がヒットした時にカメラが揺れること
・カメラと視点両方を揺らす
・縦横両方に揺らす
・揺らしすぎない

Unityで実装する場合

CinemachineとAnimatorを使います。
CinemachineのFollowとLookAtを設定します。(Followの子にLookAtを設定)
あらかじめ均等詰めびランダムな動きをするAnimationClipを作成しておきます。
AnimatorにTriggerを設定し、攻撃ヒット時再生するようにします。

まとめ

・ヒットストップ実装のコツは画面を止めない事と完全に止めない事
・カメラシェイク実装のコツは、カメラと視点両方を揺らすこと、縦横両方に揺らすこと、揺らしすぎない事

 

 

 

 

 

LT#5 いも: どこのご家庭にもある自作シーンマネージャーの話

毎回作るのに全然情報がでないシーンマネージャーに関するお話。
スライドが多いので動画をごらんください。

 

 

 

 

 

LT#6 (スポンサー枠) やまたく: ごっこランドでみかける2Dアニメーション

今回はキッズスターのこだわりでもある、子どもに寄り添った絵作りアニメーションについてお話します。

ごっこランドのアニメーション

キッズスターのアニメーターチームはこどもxあそびxまなびを意識しています。

あそび:動いているものと反応
まなび:わかりやすい展開と表現
こども:あそびとまなびを体験してお仕事自体を楽しんでもらう

さわることで起こる、移動/変形/エフェクト/音など、これらはUnityと相性がよい

ごっこランドのガイドの意識

大人の考えるチュートリアルは使えない
・動いているものに興味をもってもらいガイドで導く、画面は止めない
・画像やガイドも統一

始点と終点がインタラクティブに変化するガイド

Constraintで対応しました。
始点と終点をConstraintで高速して、Weight値で引っ張るようにしました。
Constraintについては過去にも登壇したことがあります。

learning.unity3d.jp

 

 

ところが敵はまだまだ出現する
キッズスターでは常に人材を募集しています

www.wantedly.com

 

 

 

 

LT#7 うどん: Unity+Airtest入門 ~Unityでお手軽実機の自動テスト~

今回はAirtestとPocoの紹介をします。

Airtestとは

NetEase社のモバイルゲーム向け自動テスト用フレームワーク
タップやスワイプなどのUI操作や画像ベースのUI操作を簡単にできる
IDEも公式で用意されていてAPIもとてもシンプル

Pocoとは

NetEase社のUI自動テスト用フレームワーク
Unity、COCOSなどに対応
ヒエラルキー解析によるUI処理ができる(HierarchyのGameObjectを取得しタップするなど)

 

AirTestの使い方についてはスライドをどうぞ

 

まとめ

めちゃくちゃ便利です。UIのテストが直感的に実装できます。
ヒエラルキーベースのテストが優秀。

 

会社ではチュートリアルの自動テストや多人数が必要な機能のテストに使用しています。

ドキュメント

Airtest

Poco

 

Qiitaも書いています

qiita.com

 

 

 

 

LT#8 きゅぶんず: Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?

頭に思い浮かんだUIを素早くUnity上で表示させる方法だったり、UIを変更するサイクルを高速化する方法についてお話します。

Adobe XDとは

Adobe製のUI/UXデザインツールです。UIを作るためだけに作られた専用のツール。
無料プランもありWindowsでもmacOSでも動きます。

www.adobe.com

AkyuiUnity.Xd

あわせて紹介するのがAkyuiUnity.Xdというライブラリ
MITライセンスで使えるXDからUnityに変換してくれるライブラリです。

github.com

 

ここで動作デモ
動画をご覧ください

 

AnKuchen

生成されたPrefabを扱うオススメライブラリ
Scriptから文字列指定でGameObject、Componentを取ってこれる。

github.com

まとめ

今日発表した仕組みを使うことで、画面を素早く作って素早く試せる
変更したい箇所が出てもXD上で編集してボタンで反映、開発サイクルを高速化できる

 

もっと知りたい方向けに解説動画を上げています

www.youtube.com

 

 

 

 

LT#9 ゆーじ: 知らなかった!DOTween便利Tips集

便利だけど知らない人がいそうな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は便利な使い方がたくさんあります
公式ドキュメントを見るだけでも新たな発見があるかも

dotween.demigiant.com

 

 

 

 

 

スポンサー紹介

キッズスター

ごっこランドを作成しています。

biz.kidsstar.co.jp

お陰様で大好評です。エンジニア絶賛大募集中なのでWantedly@monryまでどうぞ

www.wantedly.com

 

ワンダープラネット

シンプルだけど奥深い事業をしています。
グローバル展開を行う専用のスタジオがあります。
エンジニア募集中なので興味のあるかたはこちらからどうぞ。

www.wantedly.com

 

 

 

次回予告 

次回は5月開催を予定しているとのこと

 

 

 

以上です

 

間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。