在用代码将.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中是否有任何要更改的属性?
谢谢。
答案 0 :(得分:2)
这是透明性问题。您正在使用具有“渲染模式” 的标准材料来设置“不透明” 。您必须将其设置为“淡入淡出” 或“透明” 。在这种情况下,“淡入淡出” 应该会更好地工作。之后,您可以控制金属和平滑度滑块以使其更暗或更亮。您还可以使用其他着色器,例如 Sprites ---> Default , UI ---> Default 或不亮 ---> 透明,它们应该工作而无需设置其他任何内容。
这将解决您的问题,但是,如果您需要做的只是显示已加载的纹理,请使用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;
}