[英]Draw 3D GameObject above GUI in Unity
我想在我的项目和GUI Textures中的所有其他组件前面绘制一个GameObject。
我创建了第二个“相机”,并设置了“深度”和“图层”,但仍然无法正常工作。 希望您能帮助我找到错误或遗忘的内容。
这是我的MainScript,它正在绘制一个简单的Texture:
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。 Texture在预览屏幕中可见,但在运行时,MainScript中绘制的Texture为前景。
我还制作了两个我的相机对象的屏幕截图。 看这里:
我也可以为您提供整个项目。 这只是一个基本的测试项目。
这是指向Google云端硬盘中项目的链接: 下载
将camera2的深度设置为camera1.depth + 1,将camera2的清除标志设置为仅深度,将camera1的清除标志设置为skybox。 取消选中Camera2上的GUILayer,然后选中camera1中的GUILayer。 那应该做...
您不能在GUI元素的前面绘制3D对象, OnGUI
代码始终在所有内容的顶部进行渲染。
为此,您可以使用“ 渲染纹理” (仅Unity Pro):在场景中有两台摄像机,将3D对象放置在一台摄像机中,将此摄像机渲染为纹理,最后使用该纹理作为GUI.DrawTexture()
的源。 GUI.DrawTexture()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.