2017-02-10 62 views
0
  • 我有我已经宣布在画布如何从一个链接

  • 到该图像,我需要从一个链接加载图像(“图像的场景HTTP负载在Unity的图像/资产/屏幕保护程序“)

其实我也做了一些加载图像:

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

@Programmer我需要从互联网上显示图像。 ..对我需要通过缩放比原来的尺寸来显示图像,我的代码全屏显示图像 –

+0

在谷歌搜索“html in unity3d”。我敢打赌,你会得到你想要的解决方案之一。 –

+0

我的问题是我不能缩放我从网上加载的图像 –

回答

1

你正在下载纹理并将其存储在img1变量中,该变量是Texture2D的一种类型。随后在OnGUI函数中使用GUILayout.Label显示Texture2D图像。问题是重新调整图像...

就像我在您的other发表的帖子中提到的那样,不是使用OnGUI函数。做不是使用任何Unity API,需要OnGUI函数除非你正在编辑插件。

在你的函数,

void OnGUI() 
{ 
    foreach (UnityEngine.Touch touch in Input.touches) 
    { 
     guitextureindi = false; 
    } 

    if (guitextureindi) 
    { 
     GUILayout.Label (img1); 
    } 
} 

传递的widthlength要的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; 
} 

您也可以调整ImageRawImage在屏幕上:

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); 
}