2017-06-27 59 views
0

我對團結是全新的,所以需要你們的幫助。我有一個草坪質地的第一級環境,這是完美的,現在我想給雪地區看看&感受到我的整個環境使用第二級和第三級的雪質感,通過使用沙漠對我的環境的沙漠感在環境的紋理。單獨/不同質地的整體環境比其他等級

我面臨的困難是環境中有數百個與網格渲染器的遊戲對象。我幾乎不可能使用腳本訪問數百個meshrenderer並分配紋理。

任何人都可以爲這種情況提供簡單和最佳的解決方案。

回答

0

通常情況下,對於您正在構建的場景,使用不同材質的不同預製件很常見。但是,如果唯一的區別是紋理,則有一個相當簡單的解決方案:

MeshRenderers共享材質,這意味着對材質紋理的更改應導致所有使用該材質的MeshRenderers進行更新。

更改此紋理(編輯器外部)的最簡單方法是在每個場景上都有一個腳本,用於更改材質以獲得所需的紋理。事情是這樣的:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class TextureSetter : MonoBehaviour 
{ 
    public Material materialToChange; 
    public Texture targetTexture; 

    private void Awake() 
    { 
     materialToChange.SetTexture("_MainTex", targetTexture); 
    } 
} 

當你運行你的遊戲,你應該看到所有材料的物體設置更新:

從此開始: enter image description here

爲了這個時你運行遊戲: enter image description here

+0

這真的很有幫助 謝謝:) –

0

非常感謝你@托馬斯巴特利特回答。 你的答案顯示了我解決問題的方法。在你的情況下,我想有點冗長,去每個有meshrenderer的gameobject,並且訪問材質和改變紋理。 他們是一個簡單的方法,我發現。

使用插件「簡單網格合併器」,它將合併所有在單個空遊戲對象中的環境中的所有網格渲染器上使用的材質,如附圖所示。

在獲得單個遊戲對象上的所有材質後,將該腳本附加到該單個遊戲對象上並訪問材料,如@Thomas Bartlett腳本和Enjoy中所示。 :) Image

鏈接以獲取插件網組合如下

Link

鑑於其可能是另一種方式是讓阿特拉斯一種類型的紋理(比方說草的外觀和感覺的環境)和另一個雪地外觀和感覺的環境,只是根據水平或要求更換地圖集(但我沒有應用這個解決方案,我希望它也可以)

謝謝:)