Внутри пустого игрового объекта есть 3 куба: redCube , blueCube , & greenCube .Каждый куб имеет свой собственный стандартный прозрачный материал: red_mat , blue_mat и green_mat .
Прикрепите скрипт к пустому игровому объекту и добавьте кнопку UI (нельзя использовать кнопку переключения) на сцену.При нажатии кнопки пользовательского интерфейса все 3 куба меняют непрозрачность с 1f
до 0.5f
.При повторном нажатии кнопки пользовательского интерфейса все 3 куба изменяют непрозрачность с 0.5f
на 1f
.
Проблема в том, что когда я нажимаю кнопку UI один раз, непрозрачность всех кубов становится 0.5f
(пока все хорошо ...).Когда я снова нажимаю кнопку пользовательского интерфейса, непрозрачность всех кубов меняется на 1f
, НО , все материалы кубов становятся белыми и не возвращаются к своему первоначальному цвету.Мне нужно, чтобы кто-то показал мне, как это работает.
Как изменить значение альфа-канала только при нажатии кнопки пользовательского интерфейса?Я пробовал общие материалы / общие материалы.Но это не сработало.Возможно я использовал это неправильно.
using UnityEngine;
public class OpacityController : MonoBehaviour
{
public float opacity = 0.5f; //opacity control
public Component[] renderer; //get all the children renderer component
int i = 0; //toggle the button
void Start()
{
renderer = GetComponentsInChildren<Renderer>();
}
public void OnOpacityButton()
{
Color color1 = GetComponent<Renderer>().material.color;
color1.a = 0.5f;
Color color2 = GetComponent<Renderer>().material.color;
color2.a = 1f;
i++;
if (i % 2 == 1) //toggle the button
{
foreach (Renderer col in renderer)
col.sharedMaterial.color = color1;
} else
{
foreach (Renderer col in renderer)
col.sharedMaterial.color = color2;
}
}
}