更改材质的纹理

问题描述 投票:-1回答:1

如果我的问题很基础又很愚蠢,我首先要道歉,因为我对编码和统一/求婚一般来说还很陌生。

我想跟踪自定义图像并在其下显示一个四边形(我已经完成了这一部分)。我还设法将四边形的材质/纹理/外观设置为计算机中的图像。但是,当尝试构建为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;


    }

}
c# android unity3d vuforia
1个回答
0
投票

虽然从代码中并不清楚最初声明了_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;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.