2017-06-20 62 views
0

在我的場景中,我有2個相機(分屏)。只有一臺攝像機才能改變圖層的透明度?例如,「layer1」對於右相機具有alphatrasparency = 0.5,而左相機顯示「layer1」而沒有透明度。透明層統一

回答

0

從表面上看沒有

有一個辦法做到這一點,雖然。這有點破解,因爲它不依賴於物理層,而是存在一個自定義monobehavior腳本。這是我從頭到尾記住的事情(如果需要,我可以稍後再挖掘一個實現)。

第1步:您將需要一個MonoBehaviour腳本附加到您想要以不同方式渲染的每個遊戲對象。這個腳本是絕對必要的

第2步:該腳本將包含一個功能(你可以使用現有的行爲腳本,如果所有的對象已經有一個共同點,你可以添加此功能,該腳本)。不管你想要什麼,都可以調用它,但是像AboutToBeRendered(Camera cam)

第3步:創建另一個腳本,並將它附加到兩個攝像頭。該腳本還會有它的一個功能:OnPreRender()

步驟4:在此的OnPreRender方法,你需要做的:

  • 找到步驟1
  • 所有的遊戲對象得到他們的成分有該方法AboutToBeRendered
  • 調用該方法,傳遞攝像機作爲放慢參數

步驟5:編寫AboutToBeRendered方法。其中兩個照相機被傳遞到方法

  • 設置材料的顏色是透明的或沒有,根據需要
  • OnPreRender()

    • determinie僅稱爲上腳本與在相機組件相同的GameObject,指示此相機即將渲染場景。但我們實際上想要的是對象將被渲染知道它即將被渲染和通過哪個相機。這就是爲什麼我們需要在步驟腳本1.

      我想你可以跳過步驟1,只考慮場景中的每個對象,看看它的物理層,但是這將是找出比更貴「讓我看看這個組件的所有實例。」你可能而不是基於Tag,因爲FindObjectsWithTag通常被認爲是非常快,但如果你已經使用該標籤的其他東西,你運氣不好,並沒有可比較的方法獲取對象一個給定的物理層。

      但是,您必須調整相機腳本中材質的alpha值,而不是讓對象本身決定應該設置的值。

      或者的情況下,對象的材質都需要支持透明度。當我這樣做時,我阻止完全呈現對象,所以我只是禁用了它的MeshRenderer組件。

    +0

    好的,但我怎麼能做到這一點?我創建了一個渲染紋理,然後放入一個攝像頭然後呢?我是Unity的新手。對於圖層我僅指屬於該圖層的對象。 – Chuck94

    +0

    哦,你的意思完全是其他的。 egads。我的答案仍然以「表面上沒有」開始,但最後還有一段關於如何解決這個問題的段落。 Buuuut ....這樣做是一個巨大的痛苦*並且至少需要一次破解。我大約2年前做過一次,但我在錯誤的計算機上提取代碼。 – Draco18s

    +0

    @ Chuck94更新了答案,我記得做了類似的事情。 – Draco18s