• ゲーム
  • Industry
  • リソース
  • コミュニティ
  • 学習
  • サポート
開発
Unityエンジン
任意のプラットフォーム向けに2Dおよび3Dゲームを構築
ダウンロードプランと価格
収益化
アプリ内課金(IAP)
ストア全体でIAPを発見し、管理する
Mediation
収益を最大化し、マネタイズを最適化する
Ad Quality
アプリのユーザーエクスペリエンスを保護する
Tapjoy
長期的なユーザーの忠誠心を構築する
すべてのマネタイズ製品
詳しく見る
詳しく見る
発見され、モバイルユーザーを獲得する
UnityベクターAI
プレイヤーを適切なゲームに接続する
Auraのオンデバイス広告
ピークエンゲージメント時にデバイス上のユーザーにリーチする
すべての成長製品
活用事例
3Dコラボレーション
リアルタイムで3Dプロジェクトを構築およびレビューする
没入型トレーニング
没入型環境でのトレーニング
顧客体験
インタラクティブな3D体験を作成する
すべての業界ソリューション
業界
製造業
運用の卓越性を達成する
小売
店内体験をオンライン体験に変換する
自動車
革新と車内体験を高める
全業界
技術ライブラリ
ドキュメント
公式ユーザーマニュアルとAPIリファレンス
開発者ツール
リリースバージョンと問題追跡
ロードマップ
今後の機能をレビューする
用語集
技術用語のライブラリ
インサイト
ケーススタディ
実際の成功事例
ベストプラクティスガイド
専門家のヒントとコツ
すべてのリソース
新機能
ブログ
更新情報、情報、技術的ヒント
お知らせ
ニュース、ストーリー、プレスセンター
コミュニティハブ
ディスカッション
議論、問題解決、つながる
イベント
グローバルおよびローカルイベント
コミュニティストーリー
Made with Unity
Unityクリエイターの紹介
ライブストリーム
開発者、クリエイター、インサイダーに参加する
Unity Awards
世界中のUnityクリエイターを祝う
すべてのレベルに対応
Unity Learn
無料でUnityスキルをマスターする
プロフェッショナルトレーニング
Unityトレーナーでチームをレベルアップ
Unity初心者向け
スタートガイド
学習を開始しましょう
Unityエッセンシャルパスウェイ
Unity は初めてですか?旅を始めましょう
ハウツーガイド
実用的なヒントとベストプラクティス
教育
学生向け
キャリアをスタートさせる
教育者向け
教育を大幅に強化
教育機関向けライセンス
Unityの力をあなたの機関に持ち込む
認定教材
Unityのマスタリーを証明する
サポートオプション
ヘルプを得る
Unityで成功するためのサポート
Success Plan
専門的なサポートで目標を早く達成する
FAQ
よくある質問への回答
お問い合わせ
私たちのチームに連絡する
プランと価格
言語設定
  • English
  • Deutsch
  • 日本語
  • Français
  • Português
  • 中文
  • Español
  • Русский
  • 한국어
ソーシャル
通貨
購入
  • プロダクト
  • Unity Ads
  • サブスクリプション
  • Unity Asset Store
  • リセラー
教育
  • 学生
  • 教育関係者
  • 教育機関
  • 認定資格試験
  • 学ぶ
  • スキル開発プログラム
ダウンロード
  • Unity Hub
  • ダウンロードアーカイブ
  • ベータプログラム
Unity Labs
  • ラボ
  • 研究論文
リソース
  • Learn プラットフォーム
  • コミュニティ
  • ドキュメント
  • Unity QA
  • FAQ
  • サービスのステータス
  • ケーススタディ
  • Made with Unity
Unity
  • 当社について
  • ニュースレター
  • ブログ
  • イベント
  • キャリア
  • ヘルプ
  • プレス
  • パートナー
  • 投資家
  • アフィリエイト
  • セキュリティ
  • ソーシャルインパクト
  • インクルージョンとダイバーシティ
  • お問い合わせ
Copyright © 2025 Unity Technologies
  • 法規事項
  • プライバシーポリシー
  • クッキーについて
  • 私の個人情報を販売または共有しないでください

「Unity」の名称、Unity のロゴ、およびその他の Unity の商標は、米国およびその他の国における Unity Technologies またはその関係会社の商標または登録商標です(詳しくはこちら)。その他の名称またはブランドは該当する所有者の商標です。

Hero background image

Unity のタイルマップによる 2D ゲームのパフォーマンスの最適化

Unityタイルマップで2Dゲームとモバイル アプリケーションのパフォーマンスを向上させるヒントを入手しましょう。対象となるトピックとして、シーンのサイズ、シリアル化、レンダラーのオーバーヘッド、バッチ処理などがあります。
このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。
ここをクリックしてください。

これらのヒントは、Unity の 2D ツールセットの使用経験のある方に最適です。Unityで商用2Dゲームを開発しているプロのクリエイター向けのもう1つの優れたリソースは、eBook、2Dゲーム アート、ライティング、アニメーションです。

Unityで2Dゲームを開発するのが初めての場合は、新規ユーザー向け2Dガイドから開始してください。

  • パフォーマンスに関する一般的なヒント
  • タイルマップの簡単な紹介
  • ゲームオブジェクトが少なくなる
  • シーンサイズを小さくする
  • コライダーが少なくなる
  • レンダリングのオーバーヘッドが減る
  • カリングにかかるコストが減る
  • バッチの呼び出し回数が減る
  • フレームレートの向上
  • スプライトをスプライトアトラスでパック
  • 2D ゲームクリエイター向けのその他のリソース
Unity エディターのスクリーンショット
UNITY 2D プロジェクト『LOST CRYPT』の画像

パフォーマンスに関する一般的なヒント

パフォーマンスに関する一般的なヒントをいくつか紹介します。

  • アセット(データ)のパフォーマンスについては、最初から考えるようにしてください。これらの要素のパフォーマンスが低いと、コードの最適化のために後でできることは限られてしまいます。
  • 使用可能な最もローエンドのターゲット デバイスでプロファイルします。Unity プロファイラーは、iOS デバイス用の Xcode などのプラットフォーム固有のプロファイリングツールとともに、プロジェクト開発全体で使用できます。
  • 想定するデバイスの中で最もローエンドなもので利用できる RAM の 1/3 以上は使用しないでください。これにより、幅広いモバイル端末でコンテンツを確実に実行できます(モバイル市場全体で継続して人気が高いのは安価な Android スマートフォンです)。

2D最適化のヒントについては、次のリソースを参照してください。

  • 2D に関する簡単なヒント集
  • 最適化の最前線
  • Unity における最適化
Lost Crypt をビュー
Unity - タイルマップでプラットフォーマーの 2D のレベルを作成する
タイルマップ例

タイルマップの簡単な紹介

タイルマップコンポーネントを使用すると、グリッドオーバーレイ上のタイルを使用して 2D レベルを効率的に作成できます。次のような多くの要素で構成されています。

  • タイルクラス
  • アセット
  • グリッドコンポーネント
  • タイルパレット
  • スクリプタブルブラシ

スプライトとゲームオブジェクトを組み合わせて 2D のステージを作成できるほか、ソートレイヤー、タイルマップのコライダー、アニメーション付きのタイルなどのプロパティも制御できます。正方形、六角形、等角投影型スプライトをペイントできます。

タイルマップでレベルをペイントし、タイルマップゲームオブジェクトに適用されたときにタイルマップのコライダータイプ設定に基づいて、タイルマップのコライダー 2D コンポーネントがタイルの周りにコライダーを自動生成できるようにします。

スプライトで構築されたシーンと比較して、タイルマップで得られるパフォーマンスの向上を見てみましょう。

オブジェクトの少ないタイルマップ
UNITY の 2D デモ『DRAGON CRASHERS』のタイルマップ

ゲームオブジェクトが少なくなる

タイルマップを使用すると、ロード時間が短縮されるだけでなく、メモリとCPUの使用量も削減されます。

以前に 2D ゲームやアプリを開発したことがある方であれば、ゲーム内に莫大な量のスプライトが作成されてしまった経験があると思います。そういったスプライトはすべて別個のゲームオブジェクトとして扱われます。スプライトのゲームオブジェクトにはそれぞれ Transform や Renderer など、いわゆるコンポーネントが存在し、それぞれがすべてメモリを消費しています。その他 Collider などのコンポーネントについては、CPU のオーバーヘッドを引き起こしてしまいます。

対照的に、タイルマップは 1 つのレンダラーをマップ全体およびその中のすべてのタイルで使用します。これにより、その固有のデータ構造のみが処理されるため、メモリ全体を通して複数のデータ構造が存在するよりもオーバーヘッドが少なくなります。

ゲームオブジェクトの数が少なくなることで、ヒエラルキーも簡潔になり、必要なものを探すのに複雑なリストをスクロールする必要がなくなります。

Unity - タイルマップにより小さくなったシーンのサイズ
スプライト(左)とタイルマップ(右)を使用して作成された 2 つのシリアライズされたファイルの比較

シーンサイズを小さくする

Unity タイルマップはシーンサイズを縮小します。ゲームオブジェクトとコンポーネントが少ないほど、ディスクからロード、デシリアライズ、ランタイム時のメモリ保持するオブジェクトが少なくなります。

Unity でのシーンのロードは、2 つのプロセスで構成されます。まず、ディスクからデータが読み取られます。これは、ゲーム、特に Android デバイスで最も時間がかかることが多いプロセスです。その後、データはデシリアライズされます。デシリアライズとは、データをある形式から別の形式に変換するプロセスです。基本的には、データとオブジェクトを保存された状態からリストアします。シリアライズは、シーンファイルをエディターにロードするときはいつでも Unity 内部で行われ、実行時にそれらの保存されたファイルを Unity のオブジェクトに変換します。

上の画像では、シリアライズされた 2 つのシーンファイルの比較を確認できます。1 つはタイルマップを使用し、もう 1 つはスプライトを使用して再作成されています。Pixel Reign 社のゲーム『Robbie Swifthand』のこのシーンのご協力に感謝します。

右側はシリアライズされたタイルマップによるセクションを表し、4 つのタイルで構成されています。すべてのタイルに適用されるルール(使用されるタイルの種類など)は、タイルマップの最上部で設定されています。後続のタイルはそれぞれ、使用されるタイルやその位置などの状態プロパティを示します。

左側は 1 つのスプライトを表し、Transform コンポーネントと SpriteRenderer コンポーネントがあります。

この比較から、スプライトのシリアル化がどれほど多くの処理を必要とするかを消去できます。特に、スプライトを使用しているシーンのファイル行数は 370,000 行であるのに対し、タイルマップを使用しているシーンは 30,000 行です。プロジェクトとリポジトリのサイズを小さくする結果ます。

自作のシーンをテキストファイルとしてビューしたい場合は、「Editor Settings」で「Asset Serialization」モードを「Force Text」に設定し、テキストエディターで .unity シーンファイルを開くことで、シーンをテキストファイルとして表示できます。

Unity - タイルマップによりコライダーが少なくなる
タイルマップコライダー 2D とコンポジットコライダー 2D

コライダーが少なくなる

タイルマップのコライダー 2D を複合コライダーと連携させることができます。これにより、コライダーとスプライトの数が少なくなるだけでなく、変更を加えるたびに複雑な衝突形状をリビルドする必要がなくなるため、より効率的に制作できます。コンポジットコライダーがそれを処理します。

タイルマップのユースケース
スプライトレンダラーを使用する個々のゲームオブジェクトのユースケースとタイルマップ

レンダリングのオーバーヘッドが減る

前述したように、各スプライトには SpriteRenderer コンポーネントがあり、レンダラーの数が多ければ多いほど、カリングの準備に要する時間やレンダリングのクリーンアップなど、CPU での処理が多くなります。タイルマップを使用することで、Renderer コンポーネントの数が減り、CPU での処理が少なくなります。

カリングにかかるコストが減る

シーン内に複数のカメラがある場合は、レンダラーの数が多くなります。これにより、カリング コストが増加します。

Camera ビューでは、レンダラーごと、カメラごとにカリングのコストがかかります。すべてのカメラは、シーン内のすべての Renderer コンポーネントに対してカリングチェックを実行する必要があるため、ゲームにマルチカメラを設定している場合は、タイルマップを使用することでそのコストを削減ヘルプます。

バッチ呼び出し回数減少
フレームデバッガー

バッチの呼び出し回数が減る

バッチ処理とは、別の SetPass 呼び出しを行うことなく描画できるすべてのジオメトリを収集する技術のことです。タイルマップレンダラーは、スプライトのジオメトリを位置に基づいてバッチ処理します。その結果、タイルマップレンダラーはより多くのジオメトリでより少ないメッシュをレンダーパイプラインに送信します。それに対して、SpriteRenderer はより少ないジオメトリでより多くのメッシュを送信します。次のセクションの表に示すように、タイルマップベースのシーンではバッチ数が大幅に少なくなります。

バッチ処理は、ゲームビューの「Stats」パネルで確認できます。また、フレームデバッガーを使用してアイテムがバッチ処理されていない理由を特定することもできます。

スプライトとタイルマップテーブルを使用しているシーン

フレームレートの向上

60 FPS に到達するには、各フレームのレンダリングに要する時間を 16 ミリ秒に抑える必要があります。サンプルシーンを古いiPhone 7でプロファイルした場合、スプライトベースのバージョンでは1フレームあたり244ミリ秒でしたが、タイルマップのバージョンでは1フレームあたり13ミリ秒でした。

最後に、スプライトベースのシーンでは RAM 使用率が 1.1 GB でした。これは例えばローエンドの Android スマートフォンなどでは高すぎます。タイルマップベースのシーンでは、RAMの使用はたった21 MBで済むので、幅広いモバイルデバイスに適した動作になります。

上記の比較表は、2 つのシーンのパフォーマンスの明確な違いを消去したものです。

Sprite アトラス デモ
『DRAGON CRASHERS』でのスプライトアトラスの使用

スプライトをスプライトアトラスでパック

スプライトアトラスは、スプライトをテクスチャに格納して、メモリ使用量と描画コールを最適化できるエディターツールです。タイルマップマップで使用されているすべてのスプライトを含むスプライトアトラスアセットを作成し、(すべてのスプライトが 1 つのテクスチャに収まる限り)1 回のドローコールでタイルマップレンダラーでバッチ処理できるようにします。

2D ゲームクリエイター向けのその他のリソース

2D のスキルをレベルアップする:ブログのリーディングリストでは、2DD ゲーム開発に役立つヒントを紹介しています。

アーティスト向けの 2D ゲームアート、アニメーション、ライティング:この無料のeブックでは、Unityの2Dツールセットを最大限に活用するためのベストプラクティスを紹介しています。

2Dツールの概要:Unityが2D開発者に提供する機能の概要をご確認ください。

タイルマップを使用したプロシージャルパターン - パート I およびパート II:プロシージャル生成でゲームに多様性を加えましょう。この記事では、タイルマップや RuleTile で使用できるいくつかのアルゴリズムについて説明します。