繁体   English   中英

在Unity中的GUI上方绘制3D GameObject

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM