Unityへスプライトシートを取り込む方法
UnityのプロジェクトにPNGを入れるのは一瞬です。それを鮮明で、正しい縮尺と切り分けのスプライトとして描画するには、約6つの設定が必要で、その大半は2D作業にはデフォルトが不適切です。各設定の働き、Sprite Editorでのシートの切り分け方、Unityへ入れる前に切り分けたほうが速い場合を説明します。
Texture Typeから始める
ProjectウィンドウでインポートしたPNGを選択し、Inspectorを確認します。最初のドロップダウンは Texture Type、デフォルトは Default — 3Dテクスチャ用の経路です。次へ変更: Sprite (2D and UI).
見た目だけの設定ではありません。実行するインポート処理を変え、下のスプライト設定を表示し、Unityに次の生成を指示します: Sprite 単なる次のものではなく、アセット Texture2D。これがないと、 SpriteRenderer 受け付ける対象がなく、Sprite Editorボタンは灰色のままです。2Dテンプレートで作ったプロジェクトでは新規テクスチャはすでにSpriteなので、設定を探す前に確認してください。
忘れず次を押してください 適用 Inspectorの下部です。これを行うまでUnityはテクスチャ設定を確定せず、先に別アセットを選ぶと変更が警告なく元に戻ります。ほぼ誰もが一度はつまずきます。
Sprite Mode:SingleまたはMultiple
Sprite Mode ファイルが1スプライトか複数かを決めます。
- 単一 — 全画像が1スプライトです。すでに個別ファイルに切ったフレーム、背景、UI画像に使います。
- Multiple — 画像に複数スプライトがあり、Sprite Editorで矩形を定義します。1ファイルに維持したい実際のシートに使います。
- 多角形 — 四角形ではなく独自メッシュを生成します。シートでは通常不要で、主に大きくほぼ透明なスプライトの過剰描画を減らすためです。
Multipleは反射的に選ばれがちですが、いったん考える価値があります。1枚のシートを保持すると、テクスチャ1つ、ドローコールのバッチ1つ、管理する素材1つになります。個別PNGに分けると、アニメーション設定や各フレーム編集が簡単になり、Unityのセル境界推測に依存しません。どちらも適切で、通常の決め手はシートのグリッドが信頼できるかです。
Sprite Editorでの分割
Sprite ModeをMultipleにして、次をクリック: Sprite Editor。ボタンがまったく表示されない場合は、2D Spriteパッケージがインストールされていません。Window → Package Managerから追加してください。エディター内では、 分割 左上のドロップダウンには3種類があります。
自動
Unityはテクスチャ内の不透明ピクセルの塊を走査し、それぞれの周囲に矩形を描きます。透明な隙間があり、スプライトがよく離れたきれいなシートでは、1クリックで良好に動作します。失敗するのは予測可能な3ケースです。接触・重なりは1矩形に結合され、離れた部品のあるキャラクター(浮く武器、離れた影)は複数に分割され、不透明背景のシートは画像全体が不透明なため、すべてを覆う1矩形になります。
その Method 隣のドロップダウンは再分割時に重要です。 Delete Existing 手動修正を消します; Smart 調整した矩形を維持しようとします; Safe 新しいものだけを追加します。手で修正した後はSmartかSafeを使ってください。

Grid By Cell Size
ピクセルの幅と高さを指定するとUnityがテクスチャに格子を重ねます。64×64タイルの512×512シートなど、セルサイズがわかる場合に適しています。OffsetとPaddingで外周の余白やセル間隔を扱えます。ツールで生成したシートは本当に格子なので、一度設定すれば全セルが正しい位置になります。
Grid By Cell Count
同じ考え方ですが、列数と行数を渡し、Unityが分割します。4×4と分かっていて、まだ計算していないときに便利です。割り切れない寸法には注意してください。1024を3で割ると341.33で、丸めが各セルの端に隣のスプライトの1ピクセルの細片として現れます。
Pixels Per Unitの実際の意味
Pixels Per Unit (PPU)は、テクスチャのピクセルとUnityのワールド単位の換算率です。デフォルトは100で、100×100ピクセルのスプライトはスケール1のとき、ちょうど1ワールド単位四方を占めます。
Unityのワールド単位は抽象的ですが、物理、カメラサイズ、移動速度はすべてその単位なので、選ぶ数値がゲーム全体の縮尺を決めます。一般的な慣例は2つです:
- PPU = スプライトのタイルサイズ。 タイルが16×16ピクセルなら、PPUを16にすると、1タイルが1ワールド単位になります。タイルマップは整数座標に揃い、重力の値−9.81はおおむね物理的な意味を持ちます。
- すべてPPU = 100。 高解像度の絵柄で、タイル単位の移動を行わない場合は、より簡単です。
重要なのは一貫性です。異なるPPUでインポートしたスプライトは互いに異なる倍率で表示されます。よく使われる対処である個別オブジェクトのTransformスケール調整は、問題を隠す一方で、コライダー、物理、プレハブ再利用をわかりにくくします。代わりにインポート時にPPUを正しく設定してください。
ピクセルアートのFilter Modeと圧縮
2つの設定で、ピクセルアートらしく見えるか、ぼやけた塊になるかが決まります。
Filter Mode 標準設定は Bilinear、スプライトが1:1以外で描画されるときに、テクセル間を補間します。写真のテクスチャには適していますが、32×32のキャラクターでは輪郭がぼやけ、にごって見えます。次に設定してください Point (no filter) ピクセルアート向けで、ピクセル境界を硬く保ちます。
Compression 初期値はNormal Qualityで、大半のプラットフォームではブロック圧縮です。これはピクセル群を近似するため、硬い輪郭の単色アートでは、特に透明部分付近の色のにじみなどの乱れが目立ちます。Compressionを次にしてください: None ピクセルアートのスプライト向けです。確かにテクスチャのメモリは増えますが、数枚の小シートを非圧縮にしても現代のメモリ予算では誤差程度で、見た目の差は誤差ではありません。
次のチェックも外してください Generate Mip Maps 常に元寸法近くで描く2Dスプライトではそうします。ミップマップは距離の変わる3Dテクスチャ用で、2Dでは主にメモリを使い、時には意図よりぼやけたレベルを選びます。
| 設定 | ピクセルアート | 高解像度 / 描き込みのある2D |
|---|---|---|
| Texture Type | Sprite (2D and UI) | Sprite (2D and UI) |
| Filter Mode | Point (no filter) | バイリニア |
| 圧縮 | なし | 標準画質 |
| Generate Mip Maps | オフ | 2Dではオフ、大きく縮小するならオン |
| Pixels Per Unit | タイルサイズ(8、16、32…) | 100 |
| Max Size | 少なくともシートの最も長い辺の寸法 | 少なくともシートの最も長い辺の寸法 |
事前に切り分けたファイルとUnity内の切り分け
Unityのスライサーは、想定用途に適しています。ツールで作られた実際のグリッドと透明な隙間を持つシートです。Aseprite出力へのGrid By Cell Sizeは正確で即座なので、他で行う理由はありません。
画像生成モデルのシートは別の問題です。「4×4のスプライトシート」を指示されたモデルは、グリッドに似ていても実際にはグリッドではない画像を作ります。間隔はセルごとに数ピクセルずれ、ポーズによってスプライトの大きさが変わり、想定上のセル内で内容が中央から外れます。Grid By Cell Sizeでは頭が切れます。Automaticでは、偶然接触した2フレームが結合され、盾が離れているフレームは分断されます。結局、Sprite Editorで16個の矩形を手でドラッグすることになり、20分を費やす非効率な作業です。
取り込む前にシートを切り分ければ、これを避けられます。当サイトの スプライトシートスライサー 仮定した座標でなくアルファから境界を見つけ、各内容までトリミングして個別PNGを書き出します。UnityではSprite Modeが次になります: Single Sprite Editorの作業は一切不要です。自動検出で合わなければ、手動・プリセットで各線を正しい隙間へドラッグできます。16フレームのシートなら16矩形ではなく6回のドラッグです。
実際のトレードオフがあります。個別ファイルは素材数を増やし、Sprite Atlasがなければ描画呼び出しも増やします。プロジェクトで問題になるなら、外部で分割して正しいフレームを得てから、次を追加してください: Sprite Atlas アセット(Assets → Create → 2D → Sprite Atlas)を作り、フォルダーをObjects for Packingに入れます。正しい境界とバッチ描画が得られ、Unityが得意なパッキングを担当します。
スプライトからアニメーションへ
- Projectウィンドウで、分割済みシートの子スプライトまたは個別PNGを、フレーム順に選択します。
- 選択したものをSceneまたはHierarchyへドラッグしてください。Unityが保存先を尋ね、Animation Clipと、それに接続したAnimator Controllerを作成します。
- Animationウィンドウを開いてサンプルレートを調整します。デフォルトの毎秒12サンプルは多くの歩行に適し、24はより滑らか、1桁の値は意図的にぎこちないレトロな印象です。
- フレームの順序が正しいか確認してください。Unityは名前順に並べるため、 frame_10 の間になります: frame_1 および frame_2 次のようにゼロ埋めしない限り frame_01.
- クリップを増やすには同じ手順を繰り返し、Animatorで遷移を接続します。Animatorをまったく使いたくなければ、スクリプトから直接フレームを動かすこともできます。
よくある質問
スプライトの片側に隣のフレームの細い線が出るのはなぜですか?
テクスチャのにじみです。セル寸法でテクスチャを割り切れないか、バイリニアフィルタリングが矩形境界をまたいでサンプリングしています。Filter ModeをPointに設定し、圧縮を無効にして、セルの計算を確認してください。元シートのスプライト間に1〜2ピクセルの透明な余白を加えると、恒久的に防げます。
Sprite Atlasと1枚の大きなシートのどちらを使うべきですか?
ほとんどの場合はSprite Atlasです。スプライトを別々のファイルとして作れるため、編集や並べ替えが簡単です。一方、Unityはビルド時に共有テクスチャへまとめてバッチ処理に使います。手作りの巨大シートでも実行時の結果は似ていますが、フレームを変更するたびに作業がはるかに面倒になります。
アニメーションは動くのに、キャラクターが上下に揺れます。なぜですか?
高さの異なるフレームがCenterピボットを共有しています。ピボットをBottomにするか、取り込み前にすべてのフレームを同じ寸法へ余白で広げ、各フレーム内で内容を一定の位置に置いてください。
Universal Render Pipeline用に何か変更する必要はありますか?
取り込み設定は同じです。変わるのはマテリアルです。URP 2Dは、2D Rendererが有効なときにSprite-Lit-Defaultを使い、シーンにライトがないとスプライトが黒く見える場合があります。SpriteRendererのマテリアルをSprite-Unlit-Defaultへ切り替えるか、Global Light 2Dを追加してください。
Unityに取り込む前にシートを分割
Unityの自動スライスでうまく切れないシートは、先にブラウザーで切り分け、きれいな個別PNGを取り込んでください。Magic Sliceはアルファチャンネルから境界を検出し、「手動・プリセット」では自分で線をドラッグできます。アップロードはされず、すべて端末内で動作します。
スプライトシートスライサーを開く