ドリコムさんで開催された『Drecom Tech Espresso #6 "おなかソフトのDontDestroyOnLoad"』に行ってきたので雑なメモ。
伊藤周さん、@toru_inoueさん、女子大生のとりすーぷさん、西村拓也さんのパネルディスカッション形式で進行されました。写真撮ってなかったけどこんな感じで進行。
#おなかソフトのドンデス
— izm (@izm) 2018年7月30日
ヤバい絵面 pic.twitter.com/ELfbVz1WrA
とりすーぷさんは若干遅延のある系?女子大生でした。すばらしい。
https://t.co/h1OaEdp3iv
— とりすーぷ (@toRisouP) 2018年7月30日
そういやボイチェンこれね
#おなかソフトのドンデス
西村さんの新刊
ダービースタリオン マスターズで学ぶ ゲームUI/UX制作 実践ガイド Unity対応版
- 作者: 西村拓也,冨田篤,佐藤英一
- 出版社/メーカー: ボーンデジタル
- 発売日: 2018/08/30
- メディア: 単行本
- この商品を含むブログを見る
Singletonについて
- 捨てるコードとか、逃げ場があるところだと使うけど、テスト書きにくいのでまともなコードでは使わない(井上さん)
SceneManager
とか、もともとUnityでstaticなものをラップしたSingletonは使う(とりすーぷさん)- 急ぐときは仕方ないときもある
- Sigletonなしで作ってみたら、めんどくさい(西村さん)
- シーンをまたいで引き継ぐとき、サウンド、オーディオには使う
- Zenjectの機能でSingletonなオブジェクトを持てるので、いわゆるSingletonMonoBehaviour的なものは使わない
- MainThreadDispatcherみたいなものとか、よくあるパターン
- .NET 4.6では
Lazy<T>
が使える。C# in Depthに書いてあるパターン - テストしなければよい(暴論)
- ステートを持たせなければよい、シーンをまたいで引き継がなければよい
- Singleton自体は悪くないが、他の人に色々追加されてしまう
Sceneを切り替えるか否か
- オブジェクトの引き継ぎ、管理コストを減らしたいので、1シーンで実装しよう、という本になってる(西村さん)
DontDestroyOnLoad
したオブジェクトの管理がたいへん- チーム開発だが、Sceneのヒエラルキーは触らないのでコンフリクトは発生しない
- prefabで切り替ている
- テストプレイのための工夫をしないと常に最初から実行になる
- MultiSceneを使っている。ViewのシーンとModelのシーンを分けて重ねる(とりすーぷさん)
- Zenject便利
MVP, MVC
- チームによる(井上さん)
- MとVが密結合になると壊れやすい。今はMVPに統一している(とりすーぷさん)
- 個人開発であってもルールがあると迷いがなくなる
- コンシューマーから来たので馴染みがない考え方だったが、気づいたらMVPになってた(西村さん)
- アウトゲームはPassive ViewのMVP
- インゲームはSupervising Controller
- uGUIはMVP、インゲームはそうでなくイベントをReactiveXで扱っている(とりすーぷさん)
画面に写ってたのたぶんこれ
サウンド系
- Singletonで作って呼び出す形、もっといい方法はないか
- CRI ADX2 LE 個人開発で使える。UnityのAudioMixerは馴染まなかった(とりすーぷさん)
- 自作するならSingleton、どうせテストしない(井上さん)
- ボタンを押したときに必ず通る処理があるので、そこでデフォルトの音を鳴らすようにして漏れをなくしている(西村さん)
- 鳴らすサウンドの指定はenum。stringは事故が怖い
ネットワークライブラリ
- UNETの話はしたくない
- 選択肢は、Photon Cloud、モノビットエンジン
- PhotonRx作った(とりすーぷさん)
- もしくは自作する
所感
かなりUnityを使い込んでいる方々による生々しい話が聞けて、とても有意義な勉強会でした。 すでに第2回開催の話も出ているようで、期待しています!