UnityのSpriteクラスとTexture2Dクラスの違いは何ですか?


19

UnityにはTexture2DクラスとSprite(関連するSpriteRenderer)の両方があります。これら2つのクラスの違いは何ですか?どちらも画像を表します。2Dゲームの場合、どちらを優先する必要がありますか

使用Spriteしている「ビルボード」クワッドを自分で作成する必要がないという2つの主な違いはありますか?そして、それSpriteは常にカメラに対して直接レンダリングされますか?

回答:


16

あなたは正しいです-やや。デフォルトでは、スプライトはカメラに対して直接レンダリングされますが、3Dシーンでスプライトレンダラーを使用している場合は、これを簡単に変更できます。

スプライトはシーン内の物理オブジェクトですが、Texture2Dはまさにそれが言っているとおりです。テクスチャ。テクスチャはマテリアルにアタッチし、マテリアルはゲームオブジェクト(プレーンなど)にアタッチする必要があります。

Unity 3.xの時代には、すぐにスプライトをサポートしていなかったため、独自のスプライトマネージャー/クラスをロールする必要がありました(または、この煩わしさを改善しようとしたアセットストアからアセットを購入するオプションがありました) )。Unityは、2Dゲーム(スプライト、スプライトシート、2D物理学)の組み込みサポートをついに提供する4.xまで、2Dゲームをサポートすることを意図していませんでした(開発者はそれを実現する方法を見つけました)。

2Dゲームを行う場合は、常にSpriteクラスを使用してください。それはあなた自身を転がすよりも優れており、十分以上のものを提供します。


AFAIK Spritesは、必要に応じてUnityによって自動的にアトラスにパックされます。
bummzack

それはUnity Proにのみ当てはまります。トリッキーな
盗聴者

4
これはUnity 5で無料になったと思う
クリスホークス

@ChrisHawkes確かに-ステートメントを確認するためだけです:)-ウィンドウ>スプライトパッカー
-AgentKnopf

6

これらは、私がSpriteで気に入っている利点の一部です。

  1. すべてのSpriteRendererはデフォルトで同じマテリアル、Sprite-Defaultを使用しますが、それらはすべて異なる画像/アトラスを持っているため、Unityの動的バッチ処理の1つの条件を自動的に満たします。
  2. すべてのスプライトが同じSprite-Defaultマテリアルを持っている場合でも、各スプライトに(SpriteRendererのインスペクターを介して)異なる色合いを適用できます。Texture2Dベースのアプローチでは、これは「色」プロパティをマテリアルに結び付けることはできません。これは、色のアルファ値を介してスプライトをフェードアウトする場合にも非常に便利です。
  3. 不均一なスケーリングによる動的バッチ処理をサポートします。
  4. シングルモード/マルチモードがあるので、マルチモードでテクスチャアトラスから各イメージを個別のスプライトとして取得できます。
  5. シーンビューでスプライトの角をつかんで、スケール/回転ギズモツールに変更せずに、スケールまたは回転できます。

4
6. Unityは、スプライトの非透明部分の輪郭に合うジオメトリを自動生成します。これにより、クワッドと同じスプライトをレンダリングするのに比べて、オーバードローを減らすことができ、ユーザー/ Unityがアトラスでスプライトをより密にパックできるようになります。
DMGregory
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.