2014-02-05 3 views
0

Мне нужно иметь объект в моей смене сцены между двумя разными материалами во время выполнения, когда в моем проекте Unity нажата кнопка. Тем не менее, я никогда не делал этого раньше, и у меня возникает вопрос, как это сделать.Переключение между несколькими материалами при нажатии кнопки

В моей сцене у меня есть один игровой объект, который я назвал своим контроллером. Этот скрипт имеет свой материальный класс коммутации и выглядит следующим образом:

public GameObject cupMesh; 
bool isOn = true; 


// Use this for initialization 
void Start() 
{ 
    cupMesh = GameObject.Find("CupMesh"); 
} 

// Update is called once per frame 
void Update() 
{ 
} 

void OnGUI() 
{ 
    if(GUI.Button(new Rect(10,10, 100, 40), "Show mesh")) 
    { 

     renderer.enabled = false; 
    } 
} 

Я знаю, что это не меняет материал, но приведенный выше код не делает ничего. Я никогда ничего не модифицировал в средстве рендеринга сетки, но я знаю, что на нем есть список материалов.

Как я могу получить доступ к этому списку, чтобы я мог переключаться между двумя найденными там материалами?

+0

Иногда документация очень полезна , просто сделайте небольшое усилие, чтобы искать внутри документа, и вы получите довольно объяснительные примеры для своих целей. http://docs.unity3d.com/Documentation/ScriptReference/Material-mainTexture.html – VicM

ответ

0

Чтобы показать или скрыть геймобжекты, а не использовать render.enabled свойство, вы должны использовать это:

// Unactivates the game object. 
gameObject.SetActive (false); 

Однако это не ясно из кода, если вы хотите изменить материал объекта, сценарий прилагается, или игровой объект cupMesh.

Если вы хотите, чтобы сделать cupMesh исчезнуть, вы должны использовать:

cupMesh.SetActive (false); 

Или, если вы хотите получить доступ к компоненту материала в cupMesh, это

cupMesh.renderer.material 
Смежные вопросы