更改 material 的纹理

Changing the texture of material

如果我的问题非常基础和愚蠢,我首先想事先道歉,因为我对编码和 unity/vuforia 总体上还很陌生。

我想跟踪自定义图像并在其下方显示一个四边形(我已经完成了这部分)。我还设法将四边形的 material/texture/look 设置为位于我计算机中的图像。但是,当尝试构建到 android 应用程序时,我无法正确设置文件路径并且它不起作用。

我希望四边形的 material/texture/look 一直保持 changing/updating,这可能吗?我可以不断地覆盖我 computer/phone 上的图像文件,但照片会在应用程序本身中更新吗?

非常感谢您的提前帮助!

绝望的学生

   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 最初声明的位置——它们不在您显示的范围内——您可能混淆了引用并覆盖了它们,但不是实际的 material。这有效:

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;
        }
    }
}