2014-01-20 2 views
2

Я хотел бы нарисовать GameObject перед всеми остальными компонентами в моем проекте и графическом интерфейсе.Draw 3D GameObject выше GUI в Unity

Я создал вторую камеру и установил глубину и слой, но он все еще не работает. Надеюсь, вы можете помочь мне найти ошибку или что-то, что я забыл.

Вот мой скрипт, который рисует простую текстуру:

using UnityEngine; 
using System.Collections; 

public class MainScript : MonoBehaviour 
{ 
Texture2D texture; 

// Use this for initialization 
void Start() 
{ 
    texture = new Texture2D(Screen.width, Screen.height); 

    for (int y = 0; y < texture.height; y++) 
    { 
     for (int x = 0; x < texture.width; x++) 
     { 
      texture.SetPixel(x, y, Color.blue); 
     } 
    } 
    texture.Apply(); 
} 

void OnGUI() 
{ 
    GUI.DrawTexture(new Rect(0, 0, texture.width, texture.height), texture); 
} 
} 

Я также создал две камеры и GameObject, который отображает GUI Texture. Текстура видна на экране предварительного просмотра, но во время выполнения текстура, которая рисует MainScript, находится на переднем плане.

Я сделал еще два скриншота из моих объектов камеры. Смотрите здесь:

enter image description here

enter image description here

Я также могу поставить весь проект для вас. Это всего лишь базовый тестовый проект.

Вот ссылка на проект в Google Drive: Download

ответ

0

набора глубина КАМЕРЕ 2 до camera1.depth + 1, Ясные Флаги КАМЕРЕ 2 до глубины только и Четкие Флаги camera1 к скайбоксу. Снимите флажок GUILayer на Camera2 и проверьте GUILayer в камере1. Это должно сделать это ...

enter image description here

enter image description here

enter image description here

+0

Прежде всего, спасибо за ваш ответ. Теперь он работает в моем проекте в зависимости от настроек, которые вы мне рассказывали. В моем случае, я хотел бы иметь 3D-объекты над GUITextures, которые я рисую в своих C# -Scripts. Возможно ли это также? Там я все еще застрял. В противном случае я буду использовать ваше решение, но было бы сложно реализовать это в ретроспективе. –

+0

Я понятия не имею, что именно вы хотите. К сожалению, у меня более старая версия, чем у вас, и я работаю над Mac, поэтому я не могу импортировать ваш проект. –

0

Вы не можете рисовать 3D-объекты перед элементами GUI, OnGUI код всегда делает в довершение всего.

Для этого вы можете использовать Render Textures (только для Unity Pro): в вашей сцене есть две камеры, поместите 3D-объекты в одну камеру, сделайте эту камеру текстурой и, наконец, используйте эту текстуру в качестве источника GUI.DrawTexture() ,

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