2016-11-25 7 views
-3

Я работаю с Google Картоном в единстве. В моей главной сцене у меня есть skybox с изображением в виде текстуры. Как я могу получить цвет пикселя, который я ищу? Skybox - это элемент mainCamera, то есть ребенок «Голова». Я положил также GvrReticle как ребенок головы; это полезно для моей цели? СпасибоЦвет текстуры skybox unity

ответ

0

В основном вы ожидаете окончания кадра так, чтобы камера отображала. Затем вы читаете полученные данные в текстуру и получаете центральный пиксель.

Редактировать Помните, что если у вас есть элемент пользовательского интерфейса, отображаемый в центре, он отображает цвет элемента интерфейса, а не цвет.

private Texture2D tex; 
public Color center; 

void Awake() 
{ 
    StartCoroutine(GetCenterPixel()); 
} 


private void CreateTexture() 
{ 
    tex = new Texture2D(1, 1, TextureFormat.RGB24, false); 
} 

private IEnumerator GetCenterPixel() 
{ 
    CreateTexture(); 
    while (true) 
    { 
     yield return new WaitForEndOfFrame(); 
     tex.ReadPixels(new Rect(Screen.width/2f, Screen.height/2f, 1, 1), 0, 0); 
     tex.Apply(); 
     center = tex.GetPixel(0,0); 
    } 
} 
+0

Хорошо, спасибо. Это сработало. Но теперь у меня есть еще один вопрос: как я могу получить центральный пиксель текстуры Skybox другой камеры (не основной), которая работает, но не отображается на экране? Эта камера является «сестрой» основной камеры. Я думаю, что я должен начать с вращения «Голова», но я не знаю, как –