2017-01-15 2 views
1

в моей 3D мини-игре Google Cardboard VR, прежде чем переключиться на другую сцену, я хотел бы потушить фон текущей сцены до белого для приятного эффекта перехода.Unity 3D: Цвет фона камеры не применяется

Я построил функцию, которая изменяет значение цвета от желтого до белого Whithin 2 секунды:

within Update(): 

if (started) { 
    if (startTime >= startDelay) { 
    //start 
    } else { 
    //fade 
    thisBrightness = startTime/2; // runs 2 seconds 
    if (thisBrightness > 1) { 
     thisBrightness = 1; // just in case 
    } 
    Camera.main.backgroundColor = Color.Lerp (mainCameraBackground, mainCameraFaded, thisBrightness); 
    startTime += Time.deltaTime; 
    } 
} 

Я вошел поплавок «thisBrightness» и изменяется от 0 до 1, как это должно быть. Кроме того, я вижу в инспектору, что цветовое поле в Camera> Background меняется, но в моем Game Preview это НЕ - цвет остается.

enter image description here

Кто-нибудь имеет какое-либо объяснение и решение для этого ??! 1000 спасибо!

Феликс

Unity 5.5.0f3 персональный Google Картон 1,0

+0

По крайней мере, теперь я нашел Объяснение: В режиме исполнения SDK Google Cardboard добавляет две новые камеры (Left + Right) в качестве детей основной камеры. Теперь я должен найти способ изменить цвет фона;) – Felix

ответ

1

Edit: Я только что вернулся к этому вопросу и нашел, что это на самом деле не ответил. Я узнал, что Основная камера преобразуется в отдельные камеры слева + справа от Google VR SDK.

Вам нужно обрабатывать как отдельно, см ниже код, например, как я resoved это в конце концов:

public Camera leftCamera; 
public Camera rightCamera; 

mainCameraBackground = new Color (1, 0.8f, 0); // set to yellow initially 
mainCameraFaded = new Color(1f,1f,1f); 
mainCameraCurrent = new Color (0f, 0f, 0f); 

// main camera is converted to left + right by Google VR SDK. 
// this is why we need to handle both separately 

leftCamera.clearFlags = CameraClearFlags.SolidColor; 
leftCamera.backgroundColor = mainCameraBackground; 

rightCamera.clearFlags = CameraClearFlags.SolidColor; 
rightCamera.backgroundColor = mainCameraBackground; 

, а затем:

mainCameraCurrent = Color.Lerp (mainCameraBackground, mainCameraFaded, thisBrightness); 
rightCamera.backgroundColor = mainCameraCurrent; 
leftCamera.backgroundColor = mainCameraCurrent; 
+2

Привет, пожалуйста, разместите решение вопроса, если вы его нашли. Это не решение вашего вопроса. Вы можете отредактировать его и расширить свой ответ. – Programmer

+0

@Programmer надеюсь, что этого достаточно – Felix

+0

Yup, что лучше. Не отправляйте ответ только с ссылкой, так как ссылка может исчезнуть в любое время, делая ваш ответ бесполезным. +1 – Programmer

Смежные вопросы