簡體   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