2016-11-25 6 views
-3

Ich arbeite mit Google Karton in Einheit. In meiner Hauptszene habe ich eine Skybox mit einem Bild als Textur. Wie kann ich die Farbe des Pixels bekommen, das ich suche? Die Skybox ist ein Element von mainCamera, das Kind von "Head". Ich habe auch GvrReticle als Kind des Kopfes; Ist es für meinen Zweck nützlich? DankeFarbe der Textur Skybox Einheit

Antwort

0

Grundsätzlich warten Sie auf das Ende des Rahmens, damit die Kamera gerendert hat. Dann lesen Sie die gerenderten Daten in eine Textur und erhalten das zentrale Pixel.

bearbeiten Beachten Sie, dass wenn Sie ein UI-Element in der Mitte gerendert haben, es die Farbe des UI-Elements nicht die Farbe dahinter zeigt.

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

Ok, danke. Es funktionierte. Aber jetzt habe ich eine andere Frage: Wie kann ich das zentrale Pixel der Skybox Textur einer anderen Kamera (nicht Haupt) erhalten, die läuft, aber nicht auf dem Bildschirm gerendert wird? Diese Kamera ist "Schwester" der Hauptkamera. Ich denke, ich sollte von der Rotation von "Head" ausgehen, aber ich weiß nicht wie –