我的问题与Unity3D有关。 我有一个从http下载的图片网址列表。 我只想在GUILayout.BeginScrollView上显示这些图像。 我从几天开始搜索它,但没有得到任何适当的答案。
这是我的代码Sample,
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());
}
}
现在,我有许多Image Urls,但是如何在GUILayout.BeginScrollview上显示这些网址的图片。 Thanx任何帮助。
答案 0 :(得分:1)
@Akshay嗨,你们都准备好了,试试吧......
如果你有一个图像列表,然后将它们添加到IList中,得到它,并使用texture2D inOrder将这些图像显示到scrollview。看看这个,我想你的回答......
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());
}
}
现在在你的主类中写下这个restcall,你想把这些图像添加到scrollview ......这真的很简单......
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===============================================================
我想,你明白了......因为我在努力...而且它非常简单..
答案 1 :(得分:0)
如果你可以在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);
}