今回はUnityでビルドしたゲームがカクカクする問題にぶち当たったという話と、その原因を突き止めて解決したという話です。
私は以前「【Unity】作ったゲームが重い・カクカクするときの対処法まとめ」という記事でゲームがカクつく問題への対処法をドヤ顔で語っていて、まさか自分のゲームがカクつくことはないだろうと高をくくっていました。…が、先日制作中のゲームを試しにビルドしたらなんと1秒おきにカクつくではありませんか!!正直原因に全く心当たりがなかったのでこれには心底参ってしまいました。
しかし粘り強く調べてみたら意外な原因があったので、ここではそれについて書いていきますね。
※今回はPC用にビルドした場合について書いています。スマホ向けだとまた話が違ってくると思うのでご注意ください。
前提知識:ゲームがカクつく主な原因
でははじめに、前提知識としてゲームがカクカクする主な原因を挙げておくと次のようなものがあります。
- ゲームが重い
- 物理演算の処理が悪い
- カメラの処理が悪い
詳しい話は先ほどの記事に書いたのでそちらをご覧いただければと思いますが、端的に言うとゲームそのものが重くてフレーム落ちしているか、もしくはキャラやカメラの移動関係の処理が悪くてガタガタしているかのどちらかの場合が多いです。しかし今回はこれらのうちのどの原因にも当てはまりませんでした。
Unityエディタ上では滑らかなのにビルドするとカクつく!
そもそも、今回の問題にはとても奇妙な点が1つありました。それは
という点です。なぜこれが奇妙なのかといえば、Unityエディタ上ではゲーム本体以外にも色々な処理を行っているので普通はビルド後のゲームのほうが軽くなるはずだからです。要するに
- もしゲームが重いならエディタ上でも重いはず
- 物理演算やカメラの処理が悪いならエディタ上でもカクカクするはず
なので「なんで??」となったわけですね。
心当たりが全くなかったので、他にもグラボの設定が影響しているんじゃないかと考えて設定を変えたりしてみましたが効果はありませんでした。
ビルド後にカクつく原因は「マルチディスプレイ」だった!
そんなわけで万策尽きて途方に暮れてしまったのですが、ググっていると海外の掲示板「Reddit」に同じ問題を抱えている人がいて無事解決したとのこと。読んでみるとなんとマルチディスプレイ環境だとカクつきが発生するようです。
それで私もディスプレイを3面使っているので「まさか」とは思ったのですが、ディスプレイ設定からメイン以外を切断したらゲームがカクカクせずに滑らかに表示されるようになりました!
あまりにも予想外のことが原因で愕然としてしまいましたが、何はともあれ原因が分かって良かったです。
おわりに
以上、ごく簡単ではありますが「ビルド後のゲームがカクつく問題で苦労した」という話をしました。Unityではこのように予想外のことが起きることがあるので大変ですが、粘り強く調べてみると解決策が見つかることも多いので諦めないことが肝心だなと実感した次第です。
まあ今回の場合は特殊なケースだと思いますが、同じような環境の方も決して少なくないと思いますので何かしら参考になれば幸いです。