导入.png文件运行时Unity Android

时间:2018-10-21 14:03:46

标签: c# android image unity3d import

在用代码将.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;
}

我得到如下结果: enter image description here

我在哪里做错了?

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

谢谢。

1 个答案:

答案 0 :(得分:2)

这是透明性问题。您正在使用具有“渲染模式” 的标准材料来设置“不透明” 。您必须将其设置为“淡入淡出” “透明” 。在这种情况下,“淡入淡出” 应该会更好地工作。之后,您可以控制金属平滑度滑块以使其更暗或更亮。您还可以使用其他着色器,例如 Sprites ---> Default UI ---> Default 不亮 ---> 透明,它们应该工作而无需设置其他任何内容。

enter image description here


这将解决您的问题,但是,如果您需要做的只是显示已加载的纹理,请使用RawImage组件。这是显示Texture2D的适当方法。要创建它,请转到 GameObject ---> UI ---> RawImage ,然后使用以下简单代码将其显示在< em> RawImage 。

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

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