2017-02-10 82 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); 
} 
相關問題