Sprite Renderer コンポーネントにより 2D と 3D シーン両方で Sprite 描画できます。
コンポーネントメニューからゲームオブジェクトにアタッチします ( Component > Rendering > Sprite Renderer 。もしくは、すでに Sprite Renderer がアタッチされているゲームオブジェクトを、直接作成することができます (メニュー: GameObject > 2D Object > Sprite )。
プロパティー | 機能 |
---|---|
Sprite | レンダリングするスプライトオブジェクト。スプライトオブジェクトは Texture インポーター のスプライト設定を使用して生成できます。 |
Color | レンダリングしたメッシュの頂点カラー |
X軸かY軸でスプライトを反転します。
|Material |Material used to render the sprite. | |Sorting Layer |The layer used to define this sprite’s overlay priority during rendering. | |Order In Layer |The overlay priority of this sprite within its layer. Lower numbers are rendered first and subsequent numbers overlay those below. |
3D グラフィックスでは、オブジェクトの外見はライティングや眺める角度により異なります。2D では対照的に位置、スケール、回転以外は基本的に変形されることなく単純に画面上に表示されます。スプライトの位置は 2D 座標で指定するため、レンダリングの際に「深度」やカメラからの距離という概念がありません。
しかし異なるスプライトを重ねる順番を決めることは重要です (すなわち重なったときどちらを前面に描画するか)。例えばレーシングゲームでは車体は道路より前面にあります。Unity では Sorting Layers (ソート用レイヤー) という概念によりスプライトをグループに分けて重なる順番を決められます。Sorting Layers つきのオブジェクトは、大きい数のスプライトを前面に描画します。ソート用レイヤーの優先順位が高いスプライトは、ソート用レイヤーの優先順位が低いスプライトの上に描画されてゆきます。
同じソート用レイヤーの中の複数のオブジェクトが重なる場合もあります (例えば、横スクロールゲームの 2 プレイヤー)。 order in layer プロパティーは同じレイヤーのスプライトに一貫した優先順位を与える場合に使用します。ソート用レイヤーと同様、その規則は、小さい数のスプライトが先に、大きい数字のスプライトが後からレンダリングされます。ソート用レイヤーを編集する方法の詳細は、タグとレイヤー を参照してください。ソート用レイヤーを使用しない場合は、標準の深度に基づいたソートが用いられます。
スプライトレンダラーは Sprite プロパティーで提供されたテクスチャを使用しますが、 Material プロパティーのシェーダーと他のプロパティーを使用します (これは実際に、シーン背後の MaterialPropertyBlock を使って遂行されます)。 つまり、どのテクスチャがマテリアルに指定されているかを心配することなしに、同じマテリアルを使って異なるスプライトをレンダリングすることができます。
スプライトは、各頂点の (法線ベクトルではなく) 位置、色、 UV を使用するメッシュにレンダリングされます。マテリアルに法線ベクトルが必要な場合は、頂点シェーダーで計算できます (詳しくは サーフェイスシェーダーの例 を参照してください)。
スプライトのデフォルトシェーダーは以下のとおりです。
Sprites/Default - 簡易的なアルファブレンドされたシェーダー。シーンの照明とは相互作用しません。
Sprites/Diffuse - 簡易的なアルファブレンドされたサーフェスシェーダー。照明と 相互作用します 。正面方向の法線ベクトル (0,0,–1) を生成します。
スプライトの transform.scale
を負の値にすると、反転させることができますが、子になっているゲームオブジェクトと、そのコライダーも反転させる副作用があります。この処理はパフォーマンス負荷を増大させるので、推奨されません。
Sprite Renderer の Flip 機能は、他のコンポーネントやゲームオブジェクトに影響を与えない負担のかからない方法です。この機能は単に、描画したスプライトを、X 軸か Y 軸どちらかで反転させるだけで、他には何も行いません。