更改材质的纹理



如果我的问题非常基本和愚蠢,我首先想提前道歉,因为我对编码和统一/vuforia还很陌生。

我想跟踪一个自定义图像,并在它下面显示一个四边形(我已经完成了这一部分(。我还设法将四边形的材质/纹理/外观设置为计算机中的图像。然而,当我尝试在android应用程序中进行构建时,我无法正确设置文件路径,而且它不起作用。

我希望四边形的材质/纹理/外观不断变化/更新,这可能吗?我可以不断覆盖电脑/手机上的图像文件,但照片会在应用程序中更新吗?

非常感谢您提前提供的帮助!

一个绝望的学生

void Start()
{
string path = "file://storage/emulated/0/Android/data/com.kenny.argame/files/im2.jpg";
StartCoroutine(DownloadImage(path));
}

IEnumerator DownloadImage(string MediaUrl)
{
GetComponent<Renderer>().material = FinalMaterialRef;
UnityWebRequest request = UnityWebRequestTexture.GetTexture(MediaUrl);
yield return request.SendWebRequest();
if (request.isNetworkError || request.isHttpError)
Debug.Log(request.error);
else
_material.mainTexture = ((DownloadHandlerTexture)request.downloadHandler).texture;
FinalMaterialRef = _material;

}
}

虽然从代码中还不清楚_materialFinalMaterialRef最初声明在哪里——它们不在您显示的范围内——但您可能会将引用混淆并覆盖它们,但不会覆盖实际的材料。这项工作:

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class ChangeTexture : MonoBehaviour
{
Material material = null;
void Start()
{
material = GetComponent<Renderer>().material;
const string path = "file://E:/_temp/1.jpg";
StartCoroutine(DownloadAndAssignImage(path));
}
IEnumerator DownloadAndAssignImage(string mediaUrl)
{
UnityWebRequest request = UnityWebRequestTexture.GetTexture(mediaUrl);
yield return request.SendWebRequest();
if (request.isNetworkError || request.isHttpError)
{
Debug.Log(request.error);
}
else
{
material.mainTexture =
((DownloadHandlerTexture)request.downloadHandler).texture;
}
}
}

最新更新