2016-04-23 16 views
0

2つのUIボタンを備えたUIキャンバス画像があります。私は背景、その層として設定します。しかし、このレイヤーは私のゲームの上に重なっています!どのように私はそれがすべての背後にあるのですか?UIキャンバス画像(UIボタン付き)

enter image description here enter image description here

私は背景として二IMAGEMを設定します。

私はUIキャンバスを使用しています。これは、アンカーを通して自動的に画面に調整されるためです。

-

+1

ちょうどこの1の前にあなたの最後の質問を読んだことで、私はあなたがあなたのUIをやっているやり方が悪いことをお伝えしたいと思います。最後の質問に答えても、答えは間違っています。それはあなたのために今働いているかもしれませんが、あなたのUIが大きくなったら、あなたは多くの問題を抱えています。シーン内のすべてのUI GameObjectを展開し、スクリーンショットを撮ってから、あなたのUI GameObjectの階層の画像を投稿してください。これを正しく行う方法を教えてください – Programmer

+0

@Programmer done =] –

+0

私はこれを書いています。私はもう少し質問があります。 cameraBackground-> Canvasの下にある "Backgound"と呼ばれる背景を設定しますか?また、あなたのシーンのどのgameObjectsがジャンプ、グラウンド、ジョイスティック、スコア、ポーズボタンの下にありますか?これらのいくつかはスペイン語で、スペイン語は話せません。 – Programmer

答えて

2

GameObjectがUIの一部でない限り、シーン内のGameObjectはCanvasの下にはありません。使用する背景画像はUIではありません。あなたの投稿は、Canvasが自動的に画面サイズに合わせてサイズを調整するため、UIとしてのみ表示することを示しています。

これをコードで修正し、その背景テクスチャをUIの一部にしないでください。

1. を削除/削除します。現在の背景とそのキャンバスオブジェクトを削除します。あなたはそれを必要としません。

2. 再インポート背景画像とそのテクスチャタイプスプライト(2DおよびUI)に設定されていることを確認し

3.Dragそれシーンへとに名前を変更背景。今度はの下に置く。GameObjectビーは今や親背景テクスチャであり、背景テクスチャはグラウンドの上にある必要があります。

4. BackGroundResizerという名前のスクリプトを作成し、以下のコードを入力します。スクリプトをの背景に貼り付けます。 GameObject/Texture。

// Use this for initialization 
void Start() 
{ 
resizeSprite(); 
} 

void resizeSprite() 
{ 
SpriteRenderer bgSprite = GetComponent<SpriteRenderer>(); 
float screenHeight = Camera.main.orthographicSize * 2; 
float screenWidth = screenHeight/Screen.height * Screen.width; 
transform.localScale = new Vector3(screenWidth/bgSprite.sprite.bounds.size.x, screenHeight/bgSprite.sprite.bounds.size.y, 1); 
} 

これは、この投稿の現在の問題を解決するはずです。 UIを正しく設定する方法を以下に示します。

別のキャンバスを使用してと別ののUIを使用し、表示されるタイミングに応じてグループ化します。次に、/オフにキャンバス全体を切り替えることができます。この投稿の前のpostは、画像をボタンとして使用しており、ボタンとして使用している2つの画像に別のスクリプトが添付されていることを示しています。 ボタンボタンおよび画像クリック不可オブジェクトを使用してください。そのような単純な。これらの画像をボタンに変更します。

GameOverシーンは必要ありません。 GameOverCanvasは問題ありません。 太字のGameObjectsはオブジェクト(Canvas)です。 「」で始まるものは、の子の GameObjectsです。

ステップ1:

(表示時にゲームをロードするためにまずUI).Create各子ボタンと(GameObject-> UI->ボタン以下のように名前を変更Canvas、名前をMainMenuCanvasを作成します。 ):

-playButton; 
-settingsButton; 
-exitGameButton; 

MainMenuCanvasオブジェクトへMainMenuCanvas scriptを取り付けます。

ステップ2:

は(GameObject-> UI->ボタン)をCanvas、名前をGameCanvasの(ゲーム中に表示されます).Create各子ボタンを作成し、以下のように名前を変更:

-pauseButton 
-jumpButton 

GameCanvasのオブジェクトにGameCanvas scriptを取り付けます。

ステップ3:

Canvasと名前PauseCanvas(一時停止ボタンがクリックされたときに表示されます).Create各子ボタンを作成し、(GameObject-> UI->ボタン以下のように名前を変更します):

-resumeButton; 
-backToMainMenuButton; 
-settingsButton; 
-exitGameButton; 

PauseCanvasオブジェクトへPauseCanvas scriptを取り付けます。

ステップ4:

Canvasを作成し、それをSettingsCanvasに名前を付ける(設定ボタンがクリックされたときに表示されます).Create各子ボタンと(GameObject-> UI->ボタンを以下のように名前を変更 ):

-backButton; 

SettingsCanvasオブジェクトにSettingsCanvas scriptを取り付けます。ステップは5

Canvasと名前GameOverCanvas(ゲームオーバーですかプレイヤーが殺されたときに表示).Create各子ボタンを作成し、以下のように名前を変更GameObject-> UI- >ボタン):

-playAgainButton; 
-backToMainMenuButton; 
-exitGameButton; 

GameOverCanvasオブジェクトにGameOverCanvas scriptを取り付けます。

ステップ6:ゲームシーンで

、唯一GameCanvasのが有効になっていることを確認してください。残りのキャンバスは手動でを無効にしてにする必要があります。

ステップ7:メニューシーンで

、唯一MainMenuCanvasが有効になっていることを確認してください。残りのキャンバスは手動でを無効にしてにする必要があります。

この設定が正しく行われると、私が提供したUIコードテンプレートが機能するはずです。 UI が重複しないように、がお互いにあり、簡単に機能を追加または削除できます。

セットアップは次の画像のようになります。

enter image description here

+0

後でUIを設定する方法を更新しますが、これはあなたの現在の問題を解決するはずです。 – Programmer

+0

アスペクト比が変更された場合は機能しません。比例して背景画像を変更しないようにしてください。 –

+0

@ AlanVieiraRezende AndroidやiOSで再生中に画面サイズが変わらないためです。エディタで変更することはできますが。 AndroidやiOSでこれを試してください。期待どおりに動作するはずです。エディタでゲームビューでサイズを変更しながら変更したい場合は、 'Start()'関数の代わりに 'Update()'関数に 'resizeSprite();を入れてください。ゲームビューではい​​つでもサイズを変更する必要があります。モバイルデバイスでこれを行う必要はありませんが、スタート機能で一度やります。私に教えてください... – Programmer

1

個別のUIカメラを使用することをおすすめします。これにより、UIのみをメインカメラではなく2番目のカメラに描画することができます。そうすれば、他のすべてのものと比べてどんな深さでも描画できます。これを行うには別のカメラを作成し、Culling MaskClear Flagsを設定して、スカイボックスではなくUIのみを描画する必要があります。

GoogleのUIカメラ「Unity」には、あなたが望むものを正確に行うためのさらに多くの情報が必要です。これは比較的一般的なことです。

+0

すべてのUIキャンバスをこの新しいカメラにドラッグアンドドロップする必要がありますか? –

+0

いいえ、UIキャンバスを分けてください。新しいカメラの「Culling Mask」を設定して、「UI」だけをチェックする必要があります。 'Main Camera'のカリングマスクで 'UI'を解除します。その後、カメラにUIを描画し、別の描画には他のすべてを描画します。 –

+0

あなたはスクリーンショットであなたの答えを更新したので、私は他の答えがあなたの個人的な問題をはるかに良く理解し、より完全な答えを与えると思います。それに従ってください。 –

関連する問題