我有一个场景,我在画布中声明了一个图像
对于该图片,我需要从链接加载图片(“http / assets / screensaver”)
我实际上已经做了一些加载图片的事情:
urllll = "http://192.168.137.129/ooredoo/client_api/" + ConfirmPath;
WWW imgLink1 = new WWW (urllll);
img1 = imgLink1.texture;
编辑:完整代码
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
using System.IO;
using UnityEngine.Events;
using LitJson;
using System.Data;
using Mono.Data.Sqlite;
using System.Linq;
using System.Collections.Generic;
using System;
public class ScreenSaverFromServer : MonoBehaviour
{
public Text Tester;
public int st = 0;
public int TimerFrAdd = 30;
public int OgTimerFrAdd;
public int ImageSize = 5;
public Image[] Imagez;
public Image Imag;
public int TimeToChangeImage = 10;
public int TimeToChangeVideo= 10;
public string imagePath = "Assets/Images/1K.png";
public Image photo;
public Texture2D img1;
public string urllll;
public string ConfirmPath;
public string[] paths = {"1","2","3","4","5","6","7","8","9","10"};
public string[] VedioPaths = { "Look at NEW Trump's 2-minute closing argument ad.mp4","The 2 minutes love story of TV Commercial for Canon 'You are my inspiration'.mp4"};
public string ConfirmPath1;
public int PathNO1;
public int PathNO ;
public bool guitextureindi = true;
public Image guitextureindFrame;
public string screensavertype,ImageFrameIndic;
void Start ()
{
OgTimerFrAdd = TimerFrAdd;
Tester = GameObject.Find ("Tester").GetComponent<Text> ();
InvokeRepeating("touches1", 1, 1);
Imag = GameObject.Find("ImageFrame").GetComponent<Image>();
Imag.enabled = false;
screensavertype = PlayerPrefs.GetString ("screensavertype");
ImageFrameIndic = PlayerPrefs.GetString ("screensaverActive");
}
void Update ()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
print ("touched");
if (TimerFrAdd == 0)
{
InvokeRepeating("touches1", 1, 1);
}
TimerFrAdd = OgTimerFrAdd;
Imag.enabled = false;
}
if (guitextureindFrame.enabled)
{
guitextureindi = true;
}
if(screensavertype == "0")
{
Imag.enabled = false;
}
}
public void touches1()
{
TimerFrAdd = TimerFrAdd - 1;
Tester.text = TimerFrAdd.ToString ();
if (TimerFrAdd == 0)
{
if(ImageFrameIndic == "1")
{
Imag.enabled = true;
}
CancelInvoke (methodName : "touches1");
string[] CallChange = {"ChangeImage","ChangeVideo" };
System.Random random0 = new System.Random();
int PathNO0 = random0.Next (CallChange.Length);
string ConfirmPath0 = CallChange[PathNO0];
print (ConfirmPath0);
InvokeRepeating ("ChangeImage", 1, TimeToChangeImage);
}
}
public void ChangeImage()
{
//System.Random random = new System.Random();
//PathNO = random.Next (paths.Length);
//ConfirmPath = paths[PathNO];
//photo.sprite =Resources.Load<Sprite>("Images/"+ConfirmPath) as Sprite ;
print("aaaaaaaa");
StartCoroutine (LoadImg1());
}
public void ChangeVideo()
{
Imag.enabled = false;
CancelInvoke (methodName : "ChangeImage");
CancelInvoke (methodName : "touches1");
CancelInvoke (methodName : "ChangeVideo");
System.Random random1 = new System.Random();
PathNO1 = random1.Next (VedioPaths.Length);
ConfirmPath1 = VedioPaths[PathNO1];
Handheld.PlayFullScreenMovie (ConfirmPath1,Color.black, FullScreenMovieControlMode.CancelOnInput);
if (TimerFrAdd == 0)
{
InvokeRepeating("touches1", 1, 1);
TimerFrAdd = OgTimerFrAdd;
}
}
IEnumerator LoadImg1()
{
yield return 0;
//List<string> Items13 = new List<string> (ScreenSaverCodesApi.Items12);
List<string> Items13 = ScreenSaverCodesApi.Items12;
print("aaaaaaaa2222222");
System.Random random1 = new System.Random();
print("aaaaaaaa333333");
int PathNO = Items13.Count;
int num = UnityEngine.Random.Range(0,PathNO);
print(num);
foreach (string st in Items13) {
print (st);
}
print ("path-----"+Items13[num]);
string ConfirmPath = Items13[num];
print(ConfirmPath);
print("aaaaaaaa555555");
urllll = "http://hcfhfch/nn/client_api/" + ConfirmPath; // test with an image link
print("aaaaaaaa6666666");
WWW imgLink1 = new WWW (urllll);
print("aaaaaaaa777777");
print (urllll);
print("aaaaaaaa888888");
yield return imgLink1;
print("aaaaaaaa999999");
img1 = imgLink1.texture;
}
void OnGUI()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
guitextureindi = false;
}
if (guitextureindi)
{
GUILayout.Label (img1);
}
}
}
答案 0 :(得分:1)
您正在下载纹理并将其存储在img1
变量中,该变量是Texture2D
的类型。然后,GUILayout.Label
函数中的OnGUI
显示Texture2D图像。问题在于调整图像大小...
就像我在other帖子中提到的那样,不使用OnGUI
功能。 不使用任何需要OnGUI
函数的Unity API,除非您正在制作编辑器插件。
在你的功能中,
void OnGUI()
{
foreach (UnityEngine.Touch touch in Input.touches)
{
guitextureindi = false;
}
if (guitextureindi)
{
GUILayout.Label (img1);
}
}
将您想要的width
和length
传递给GUILayout.Label
功能。
例如:
public float textureWidth = 400;
public float textureHeight = 400;
public Texture2D img1;
void OnGUI()
{
GUILayout.Label(img1, GUILayout.Width(textureWidth), GUILayout.Height(textureHeight));
}
在Unity中显示图像的正确/正确方法:
使用Image
组件:
public float textureWidth = 400;
public float textureHeight = 400;
public Texture2D img1;
public Image textureDisplayer;
void SomeFunction()
{
textureDisplayer.sprite = Sprite.Create(img1, new Rect(0, 0, textureWidth, textureHeight), new Vector2());
}
使用RawImage
组件:
public int textureWidth = 400;
public int textureHeight = 400;
public Texture2D img1;
public RawImage textureDisplayer;
void SomeFunction()
{
img1.Resize(textureWidth, textureHeight);
textureDisplayer.texture = img1;
}
您还可以使用以下网址调整屏幕上的Image
或RawImage
:
textureDisplayer.GetComponent<RectTransform>().sizeDelta = new Vector2(textureWidth, textureHeight);
简单下载,调整大小并显示图像样本:
public int textureWidth = 400;
public int textureHeight = 400;
public RawImage textureDisplayer;
void Start()
{
string imageUrl = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg";
StartCoroutine(LoadImg(imageUrl));
}
void displayImage(Texture2D imgToDisp)
{
//Resize Image
textureDisplayer.GetComponent<RectTransform>().sizeDelta = new Vector2(textureWidth, textureHeight);
textureDisplayer.texture = imgToDisp;
}
IEnumerator LoadImg(string url)
{
yield return null;
WWW www = new WWW(url);
yield return www;
displayImage(www.texture);
}