如果我的问题很基础又很愚蠢,我首先要道歉,因为我对编码和统一/求婚一般来说还很陌生。
我想跟踪自定义图像并在其下显示一个四边形(我已经完成了这一部分)。我还设法将四边形的材质/纹理/外观设置为计算机中的图像。但是,当尝试构建为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;
}
}
虽然从代码中并不清楚最初声明了_material
和FinalMaterialRef
的位置-它们不在您显示的范围之内-您可能混淆了引用并覆盖了它们,但没有覆盖实际的内容。这有效:
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;
}
}
}