【发布时间】:2019-09-30 15:15:03
【问题描述】:
我正在尝试学习如何在 C# 中使用统一的 WWWForms 制作 POST。但是,在文档中尝试了一些示例之后,我仍然无法弄清楚如何获得结果,甚至不知道它是否成功发布。这是我得到的代码来自https://docs.unity3d.com/ScriptReference/WWW.html的页面
我尝试在 main 中创建一个无限循环,并在帖子完成后分配一个静态变量,但它从未被分配。起初我以为是因为控制台关闭得太快,但事实并非如此。
class Program : MonoBehaviour
{
public string url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg";
IEnumerator Start()
{
using (WWW www = new WWW(url))
{
yield return www;
Renderer renderer = GetComponent<Renderer>();
renderer.material.mainTexture = www.texture;
Console.WriteLine("Success");
}
}
static void Main(string[] args)
{
}
}
我希望它在响应被发回后打印成功,但它却关闭了。
【问题讨论】:
-
WWW 现已过时。根据您的代码,您似乎想要下载图像并将其显示为纹理,对吗?您不想为此使用 WWW(两者都不发布),您可以使用 UnityWebRequest。在此处查看文档:docs.unity3d.com/Manual//UnityWebRequest-RetrievingTexture.html
-
我明白这一点,但我正在查看一些使用 WWW 的遗留代码,所以我想了解它是如何工作的以及如何使用它。
-
顺便说一句,
static void Main(string[] args)是不需要的。 Unity 会为你调用所有的魔法方法,并且有自己的入口点。你的将被闲置。 -
如果你想知道它是如何工作的,那么你的代码的实现是错误的。 (Unity 文档有时有一半的代码)。IEnumerator 不能被视为一种方法。 IEnumerators 也暂停并等待
yield返回。您必须启动coroutine传递您的 IEnumerator 才能工作。将您的 Start IEnumerator 更改为其他内容(例如:ImageDown)并从您的 Start 方法启动一个协程。StartCoroutine(ImageDown());
标签: c# unity3d ienumerator