Unityでイラっとする7つのことと、その対処法を考える
ぼく「ねぇ、またアセットインポートで動かなくなっちゃったんだけどー」
新卒「うーん、まあしょうがないですねぇ。待つしかないです。」
ぼく「なんでこんな待たなきゃいけないんだよー!Webはよかったなぁ」
新卒「いやいや、Webとはモノの複雑さが違いますよ。」
ぼく「むむ・・・」
ってかんじ。
- アセットインポートに時間がかかりすぎる
- ビルドに時間かかりすぎ(よくやるのはiOS)
- アセットバンドルのビルドも時間かかる
- Switch Platformもやばい
- .metaファイル邪魔
- UI作るの面倒すぎ
- Monodevelopで日本語くらい使えるようにしてくれ
1.アセットインポートに時間がかかりすぎる
一番イラッとするのはコイツ。他の開発メンバーがテクスチャ(画像)を大量に更新すると、起動したときに延々と待たされる。下手すると、1時間くらい待つこともある。
対処法1 キャッシュサーバー(チームライセンスが必要)を導入する (?)
Unity - コラボレーション - Unity Team License
お金のある方はたぶんコレが良い。
Unityでは有料でキャッシュサーバーなるものを提供している。コレを使うと、一度インポートされたアセットはキャッシュされて他の開発メンバーもインポートせず使えるようになるらしい。
自分は使ったこと無いので、効果のほどは残念ながら不明、、
(使ったことある方教えてください・・・)
対処法2 自分が作業してない時間に自動で更新するようにcron設定
個人的にはコレをcron設定することで、ある程度満足している。
これはMavericks向け。Yosemiteはこちらを見てください。
Mac Yosemiteでの外部からログインしてssh-agentを正しく使う方法
2.ビルドに時間かかりすぎ(よくやるのはiOS)
ちょっとググってみたら仲間が!!全く同じソースなら一度ビルドすれば早くなるんだけど、更新するとどうしても遅くなる。
対処法1 (書いてて思ったけど)定期的にビルドする
さっき書いたのと一緒 笑
自PCでビルドして実機確認したいとき、というのはあると思うので、
その時間を短縮したい場合は、定期的にビルドしておくしかなさそう。
ぼくはただただ待っているだけですけどね!
今度試してみよっと。
対処法2 Jenkinsを導入する
出典: Welcome to Jenkins CI! | Jenkins CI
対処法1は自PCを使う場合だけど、サーバーを立てて、Jenkinsで自動化する方法もよく使われているよう。
UnityのビルドをJenkins氏に任せて楽したい。 - ともち屋
Unity3D - Jenkinsさんでビルドしてスマホでの確認を楽ちんに - Qiita
ググって出てくるということは、結構やられている、という証拠。
3.アセットバンドルのビルドも時間かかる
対処法1 Jenkin (ry
時間かかるのは変わらないけど、別のマシンでやっといてくれるだけでだいぶ変わる。
対処法2 差分更新の実装に変える
こういうロジック入れると、更新判定のロジックが甘くて
「ビルドしたはずなのに、更新されないアセットがあるんですけど・・・」
とかなって、また大変かもしれないけど。
対処法3 指定のアセットのみ、ビルドできるようにする
書いてて思ったけど、これは入れるべき。
Unity社のDocumentにも、指定アセットでビルドするサンプルがあるし、
簡単にできそう。
http://docs-jp.unity3d.com/Documentation/Manual/BuildingAssetBundles.html
4.Switch Platformもやばい
これですよ。この左下のボタン。
iOSからAndroidに切り替えよ、と思っておもむろにコイツを押すと、
コイツがまた走って、全部インポートし直し、みたいな挙動になる。
めっちゃ時間かかって泣ける。
対処法1 Fast Platform Switch(有料)を使ってみる
Unity:プラットフォーム切り替えが遅い - ゲーム制作ブログ
こちらでも紹介されているが、結構早くなるらしい。
気になる方はコチラから。
https://www.assetstore.unity3d.com/jp/#!/content/11134
対処法2 リポジトリを2カ所に置いて、iOSとAndroidで分けて使用する
コレが一番簡単で、無料だし困らないかも。
ぼくは、定期的にcronでリポジトリを最新にしてアセットインポートを実行してるので
起動が遅くて困ることもない。
works/myapp-ios
works/myapp-android
こんなかんじで分けてる。
(以降はただウザいだけなので対処法は割愛)
5..metaファイル邪魔
特に困るのはフォルダ。gitではフォルダを管理してないので、
一度フォルダが作られた後に中身が空になると、フォルダは行き場を失う。
フォルダに対しても.metaがあるので、ムダに.metaが生まれてウザい。
ファイルについても、コマンドラインでカジュアルにmvしたいけどできず、
mvした後一度起動し、.metaが移動・更新されるのを待って
リポジトリに取り込まなければならない。
6.UI作るの面倒すぎ
cssみたいに、margin, padding, width, height, floatとかで簡単に実装したい。
NGUIを使っているが、Anchorの挙動がウザい。
少なくともwidthとheightを入力するときは優先的に指定したいのに、
Anchor優先で勝手にwidth, heightが変わるから、ちゃんと指定できない。
Anchorでmarginを自分で考えていれないといけない。
最近は慣れたからいいけど、直感的でない気がする。