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);
}
}
我如何完整地绘制这幅画?
我在文档中找到了这一点:
传统GUI和线性编写纹理
传统GUI系统的渲染元素始终使用gamma空间这意味着,对于传统的GUI系统,GUI纹理应该读取时没有删除它们的gamma。这可以通过两个步骤实现方式:
- 在纹理导入器中将纹理类型设置为GUI
- 选中高级纹理导入程序中的"绕过sRGB采样"复选框