【问题标题】:Importing .png file runtime Unity Android导入 .png 文件运行时 Unity Android
【发布时间】:2019-03-25 17:56:24
【问题描述】:

在以代码将 .png 文件导入我的项目时遇到问题。 这是我导入前的 .png 文件:

在这段代码之后:

   var pngImage = LoadPNG(pngPath);
    string pngPath2 = Application.persistentDataPath + "/images/testImage.png";
    var meshRenderer = GameObject.Find("SimInput").GetComponent<MeshRenderer>();
    meshRenderer.material.mainTexture = pngImage;


    public static Texture2D LoadPNG(string filePath)
{
    Texture2D tex = null;
    byte[] fileData;

    if (File.Exists(filePath))
    {
        fileData = File.ReadAllBytes(filePath);            
        tex = new Texture2D(2, 2);
        tex.LoadImage(fileData); 
    }
    return tex;
}

我得到如下所示的结果:

我在哪里做错了?

我一直在尝试将此文件再次保存为 .png,但结果与第一张图片相同。 Unity 中是否有需要更改的属性?

提前谢谢你。

【问题讨论】:

  • 这是您尝试将图像显示为平面或四边形的模型吗?您使用的是默认材质和着色器吗?
  • 这是飞机。我正在使用默认材质和着色器
  • 似乎这里的问题是底层材料。它是黑色的,因此您的文本不会显示,一个好的开始是将 png 的背景绘制为白色,这样您就可以摆脱 alpha,或者尝试在材质下添加一点
  • 我想也可以是着色器,因为您的光源似乎在对象上方,将这一侧置于阴影中。
  • @Vanethrane - 我改变了光源的位置,但没有效果。我想这可能是材料的问题。我可以在代码中设置 .png bg 颜色吗?

标签: c# android image unity3d import


【解决方案1】:

这是一个透明度问题。您正在使用具有 “渲染模式” 的标准材质来设置 “不透明”。您必须将其设置为 “淡出”“透明”。在这种情况下“Fade”,应该会更好。在此之后,您可以控制 MetallicSmoothness 滑块使其更暗或更亮。您还可以使用其他着色器,例如 Sprites ---> DefaultUI ---> DefaultUnlit ---> 透明,它们应该可以工作而无需设置其他任何东西。


虽然这将解决您的问题,但如果您只需要显示加载的纹理,请使用 RawImage 组件。这是显示Texture2D 的适当方式。要创建它,请转到 GameObject ---> UI ---> RawImage 然后使用下面的简单代码将其显示在 原始图像。

//Set a RawImage in the Inspector
public RawImage rawImage;

void Start()
{
    Texture2D pngImage = LoadPNG(pngPath);
    rawImage.texture = pngImage;
}

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2015-10-18
    • 2014-09-17
    • 1970-01-01
    • 2019-12-23
    相关资源
    最近更新 更多