Unity GUI.Label/GUI.Box遮光图像

本文关键字:GUI 图像 Label Unity Box | 更新日期: 2023-09-27 18:24:48

我从GUI.Label/GUI.Box绘制图像,但Unity驱动在渲染图像之前使用"遮光"(或"红色滤镜")。https://i.gyazo.com/255e4947a7ca95f835104a1f8ffa2e61.png

在屏幕右侧的原始苹果-明亮。在左边的苹果上画的是统一的,但这是黑暗的。

我使用了GUI.Color=新颜色(1f,1f,1f,1f),但它对我的没有帮助

接下来,编写编辑器(编辑器窗口)并绘制以下内容:

https://i.gyazo.com/06908720a2b00c538558c61092a98329.png

苹果是黑色的。这是我的ItemDrawService:

public class ItemDrawService {
    private GUIStyle labelStyle = null;
        public ItemDrawService(GUIStyle labelStyle){
            this.labelStyle=labelStyle;
        }
    /// <summary>
    /// Отрисовка предмета в инвентаре
    /// </summary>
    /// <param name="item">Рисуемый предмет</param>
    /// <param name="offsetX">Смещение (позиция) инвентаря по x</param>
    /// <param name="offsetY">Смещение (позиция) инвентаря по y</param>
    /// <param name="fixWebPosition">при fixWebPosition=true предмет рисуется "в сетке"</param>
    /// <param name="drawIcon">при drawIcon=false, предмет рисуется без иконки</param>
    public void DrawItem(ItemSlot item, float offsetX, float offsetY, bool fixWebPosition = true, bool drawIcon = true){
        Rect cellRectangle;
        if (fixWebPosition) {
            cellRectangle = new Rect(offsetX + CellSettings.cellPaddingX + (item.position.X - 1) * CellSettings.cellWidth,
                                     offsetY + CellSettings.cellPaddingY + (item.position.Y - 1) * CellSettings.cellHeight,
                                     CellSettings.cellWidth,
                                     CellSettings.cellHeight);
        } else {
            cellRectangle = new Rect(offsetX,
                                     offsetY,
                                     CellSettings.cellWidth,
                                     CellSettings.cellHeight);
        }
        if (drawIcon)
            labelStyle.normal.background = item.item.resource.icon;
        string description = item.item.getCount()>1? item.item.getCount().ToString()+CLang.getInstance().get(Dictionary.K_COUNT) : "";
        GUI.color = new Color(1f,1f,1f,1f);
        GUI.Label(cellRectangle, description, labelStyle);
    }

}

我如何完整地绘制这幅画?

Unity GUI.Label/GUI.Box遮光图像

我在文档中找到了这一点:

传统GUI和线性编写纹理

传统GUI系统的渲染元素始终使用gamma空间这意味着,对于传统的GUI系统,GUI纹理应该读取时没有删除它们的gamma。这可以通过两个步骤实现方式:

  • 在纹理导入器中将纹理类型设置为GUI
  • 选中高级纹理导入程序中的"绕过sRGB采样"复选框