我有一个从网站下载的图像 URL 列表。我只想在
GUILayout.BeginScrollView
上展示这些图像。我查了好几天了,没有找到合适的答案。
这是我的代码:
public void OnSuccess(object responseFromServer)
{
File imageObj = (File)responseFromServer;
IList<File.Image> imageList = imageObj.GetFileList();
for (int i = 0; i < imageList.Count; i++)
{
Debug.Log ("Downloaded Image Url Is : " + imageList[i].GetUrl());
}
}
现在,我有很多图像 URL,但是如何使用
GUILayout.BeginScrollview
显示这些 URL 的图像?
@Akshay 嗨,你已经准备好了,试试这个......
如果你有一个图像列表,那么将它们添加到一个IList中,得到它,并使用texture2D inOrder将这些图像显示到滚动视图。看看这个,我想这就是你的答案......
public void OnSuccess(object responseFromServer)
{
File imageObj = (File)responseFromServer;
IList<File.Image> imageList = imageObj.GetFileList();
for (int i = 0; i < imageList.Count; i++)
{
Debug.Log ("Downloaded Image Url Is : " + imageList[i].GetUrl());
// just add this in your callBack response. ClassName shoud be where you want to show your // images i.e OnGUI defined..
(Your_MonoBehaviour_ClassName).GetInstance().ExecuteShow(imageList[i].GetUrl());
}
}
现在在您想要将这些图像添加到滚动视图的主类中编写此休息调用...这真的很简单..
private static Your_class_Name con = null;
public static Your_class_Name GetInstance ()
{
if (con == null) {
con = (new GameObject ("Your_class_Name")).AddComponent<Your_class_Name> ();
return con;
} else {
return con;
}
}
public string ExecuteShow (string url)
{
string responseFromServer = null;
StartCoroutine (ShowAllImages (url));
return responseFromServer;
}
IEnumerator ShowAllImages (string uri)
{
IEnumerator e = executeShowAll (uri);
while (e.MoveNext())
{
yield return e.Current;
}
}
IEnumerator executeShowAll (string url)
{
WWW www = new WWW (url);
while (!www.isDone)
{
yield return null;
}
if (www.isDone)
{
listOfImages.Add(www.texture);
}
}
现在你正在寻找 listOfImages 是什么..这只是一个“IList listOfImages = new List();” ,这背后的目的是.. 看到了..
//========Setting Up ScrollView====================================================
scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Width(155));
if(listOfImages.Count > 1)
{
for(int i=0; i<listOfImages.Count; i++)
{
Texture2D myImage = (Texture2D)listOfImages[i];
GUILayout.Label(myImage,GUILayout.Height(100),GUILayout.Width(100));
}
}
GUILayout.EndScrollView();
//========ScrollView===============================================================
我想,你明白了...因为我致力于它..而且它真的非常简单..
如果您可以在Texture2D中获取图像,我有滚动视图的工作代码。
void OnGUI()
{
savedMatrix=GUI.matrix;
scrollPosition = GUI.BeginScrollView (new Rect (250f,10f,500f,1000f),scrollPosition, new Rect (10f, 0f, 250f, snaps.Length*150f));
for(int i=0;i<snaps.Length;i++)
{
GUI.DrawTexture(new Rect(0f,10f+i*140f,250f,200f),snaps[i]);
}
GUI.EndScrollView();
GUI.matrix=savedMatrix;
}
对于来自服务器的texture2D,请使用此
IEnumerator Start()
{
WWW www = new WWW(url);
yield return www;
snap.Add(www.texture);
}