プログラムによるUnity 5 2D描画スプライト


8

Unity 5でスプライトをプログラムで描画するにはどうすればよいですか?spriteBatch.Draw()XNAに似たものを探しています。私がそれについて検索したときに得られる結果は、古いhttp://wiki.unity3d.com/index.php?title=SpriteManager(これは2012年に書かれた)であるか、ユニティインターフェイスを使用して行われています。私は見つけることができるすべてがあるSpriteUnityEngine.dllでクラス。これは私が必要なものですか?描画はどのように機能しますか?本当にわかりません。


スプライトを描くとはどういう意味ですか?画面にそれらをレンダリングすることを意味するか、スプライトによって表される画像を動的に作成することを意味しますか?
MichaelHouse

@ Byte56は、私が見たすべての2Dゲームエンジンと同じように、画面上に2D画像をレンダリングします。グーグルで検索すると、なぜこれを見つけるのがとてもイライラするのかわかりません。四角形が描画しようとしているスプライトシートの一部を定義しているspriteBatch.Draw(SpriteSheetName、position、Rectangle、origin、scale、rotation)のようなものが必要です。今、a Spriteを作成してからa を作成しようとしていますSpriteRendererが、画像をスプライトに設定する方法がわかりません。
dimitris93 2015年

@ Byte56 Spriteオブジェクトには、画像を設定するプロパティさえないようです。最も近いのは、読み取り専用のsprite.textureです...実際には、スプライトのすべてのプロパティは読み取り専用です
dimitris93

回答:


16

Unityには、この種の「ダイレクトモード」レンダリングはありません。UnityのDraw更新ループを呼び出す必要はありません。

Unityでは、ゲームオブジェクトを作成してから、そのゲームオブジェクトにスクリプトをアタッチする必要があります。それらのスクリプトは、オブジェクトが物理システムの一部である場合など、オブジェクトが画面に表示されるかどうか、およびオブジェクトがどのように表示されるかを制御します。

画面に描画する新しいスプライトを作成するには、新しいゲームオブジェクトを作成し、それにSpriteRendererスクリプトをアタッチして、そのスプライトを設定する必要があります。

GameObject go = new GameObject();
SpriteRenderer renderer = go.AddComponent<SpriteRenderer>();

renderer.sprite = Resources.Load("Sprites/Player", typeof(Sprite)) as Sprite;

これは、ディレクトリ構造を想定しています

-Assets
--Resources
---Sprites
----<Your 2D assets, set with their texture type to Sprite (2D and UI)>

例えば:

ここに画像の説明を入力してください

次に、位置、回転などを変更するためのスクリプトを作成しました。

多くのコードを書かずに、これらすべてを達成する最も簡単な方法は?最初にUnityエディターでゲームオブジェクトを作成します。ゲームオブジェクトに必要なスプライトとビヘイビアースクリプトなどをすべて装備したら、それをリソースディレクトリにドラッグアンドドロップします。これはプレハブを作成します。プレハブとは、プレハブのようなものです。これらは完全なオブジェクトであり、その場で参照して作成することができます。

次のようなものを作成します。

public void CreateObject(string prefabName) {
   GameObject newObject = 
      GameObject.Instantiate(Resources.Load(prefabName)) as GameObject;
}

これにより、以前に作成したプレハブのクローンが生成されます。したがって、たとえば、プレハブにプレーヤーに向かって移動して攻撃する動作を指定した場合、そのタイプの新しいプレハブをスポーンするたびに、プレーヤーはプレーヤーに向かって移動して攻撃し始めます。一度作成する必要のあるスクリプトは、これらのゲームオブジェクトすべてを制御します。

ここで見られる主な違いは、コンポーネントの多用です。XNAのような他のゲームエンジンでは見たことのないものです。Unityは本当に強力なエンジンですが、他のエンジンとは異なる場合、他のエンジンのようにそれを使用しようとすることでフラストレーションが生じます。トレーニングについては私のプロフィールを確認してください。無料の試用版のリンクを追加したので、あなたは支払う必要がありません。


ワオ。結束に関する私の知識はたった1トン増加しました:)これは実際に多くの意味があります。プレハブのことは聞いたことがありません。どうもありがとうございました:)
dimitris93

また、私はあなたのチュートリアルを見始めました:D
dimitris93

あなたはユニティオブジェクト、コンポーネント、プレハブなどのご理解を固めるために、最初に基本的なものを閲覧することもできます@Shiroまた、私のコースのGUIの章を気にしない:(それは古くです。
MichaelHouse

1
コメントではなく、サイトに対する新しい質問のように聞こえます。
MichaelHouse

1
この回答は、Unityドキュメントの最初のページに印刷する必要があります。
easwee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.