2016-07-18 2 views
1

Ich habe eine zwei Leinwand in einer Szene und alle Canvas sind auf Screen Space Modus Kamera Render-Modus eingestellt. Der erste Canvas ist die Haupt Canvas und hat einige buttons.The ‚bestellen in Schicht‘ Eigentum ist 0.Wie kann ich verhindern, dass die UI-Raycast-Funktion durch ein anderes Canvas geht?

Die 2. Canvas die gesamte Fläche des ersten Canvas abdeckt. Wenn Sie eine Schaltfläche auf der ersten Canvas klicken, wird die zweite Canvas Popup über die erste Canvas (Reihenfolge in Schicht ist 1).

Das Problem ist, dass, wenn ich über 2. Leinwand berühre, der Raycast auch die 1. Canvas. Wie kann ich verhindern, dass der Raycast die erste Canvas trifft, während die 2. Canvas (Popup) auf dem Bildschirm angezeigt wird?

+0

Teilen Sie Ihren Code/arbeiten herum, damit andere Benutzer helfen können. –

Antwort

1

Wenn die zweite Canvas eine nur eine PopUp-Benutzeroberfläche über die erste ist, müssen Sie keine Canvas machen. Machen Sie stattdessen eine Panel. Wählen Sie Ihre erste Canvas, rechts klicken dann gehen Sie zu UI ->-Panel .Sie können dies auch von Gameobject ->UI ->-Panel. Stellen Sie nur sicher, dass Ihre erste Canvas ausgewählt ist.

In der ersten Canvas wird ein neues UI-Bedienfeld erstellt. Sie können dies in Popup-Fenster umbenennen und dann alle UI-Komponenten der Popup-Benutzeroberfläche wie Buttons und Texts unter dem Popup-Bedienfeld platzieren. Verwenden Sie popupPanel.SetActive(true);, um das Popup-Fenster anzuzeigen, und popupPanel.SetActive(false);, um es zu verbergen.

Ziehen Sie einfach das PopupPanel in den PopupPanel-Slot im unten stehenden Skript, dann können Sie showPopup() und hidePopup() verwenden, um das Popup-Panel zu steuern.

public GameObject popupPanel; 

void showPopup() 
{ 
    popupPanel.SetActive(true); 
} 

void hidePopup() 
{ 
    popupPanel.SetActive(false); 
} 

EDIT:

Stellen Sie sicher, dass Pop-up Panel am Ende der canvas in der Hierarchie ist es oben auf alles andere machen zu machen. Dies ist der Grundgedanke, die Interaktion mit anderen dahinter zu blockieren.

+0

@Umair M: Vielen Dank für die Antwort !! aber 2. Canvas ist ein Prefab, und es wird auch in anderen Szenen verwendet .. – zone1020

+0

@ zone1020 Die gleiche Lösung gilt immer noch. Redesign der 2. Leinwand in einem Panel und machen Sie es dann zu einem Prefab. Sie können es nun unter den ersten Canvas legen und die Lösung verwenden, die ich in meiner Antwort angegeben habe. – Programmer

+0

Danke ... Ich werde es versuchen – zone1020

Verwandte Themen