我想在项目和GUI Textures中的所有其他组件前面绘制一个GameObject。
我创建了第二个摄像头并设置了深度和图层,但它仍然不起作用。我希望你能帮助我找到错误或我忘记的事情。
这是我的MainScript绘制一个简单的纹理:
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);
}
}
我还创建了两个摄像头和一个显示GUI纹理的GameObject。纹理在预览屏幕中可见,但在运行时,在MainScript中绘制的纹理是预设的。
我制作了两个我的相机对象截图。见这里:
我也可以为您提供整个项目。这只是一个基本的测试项目。
以下是Google云端硬盘中项目的链接:Download
答案 0 :(得分:1)
将camera2的深度设置为camera1.depth + 1,将camera2的Clear Flags设置为仅深度,将camera1的Clear Flags设置为skybox。取消选中Camera2处的GUILayer并检查camera1中的GUILayer。应该这样做......
答案 1 :(得分:0)
您无法在GUI元素前面绘制3D对象,OnGUI
代码始终呈现在所有内容之上。
要实现此目的,您可以使用Render Textures(仅限Unity Pro):在场景中安装两个摄像头,将3D对象放在一个摄像头中,将此摄像头渲染为纹理,最后使用该纹理作为源一个GUI.DrawTexture()
。