从URL添加纹理到按钮

时间:2015-04-08 17:51:49

标签: user-interface unity3d unityscript

我正在尝试从GUI函数中的URL加载图像作为纹理。

我做了这个UnityScript代码,但它没有用,给出了这个错误:

  

OnGUI()不能是协程。)

function Start () {

}

function Update () {

}

function OnGUI () {
    var url = "http://images.wisegeek.com/duck.jpg";
    var www : WWW = new WWW (url);
    yield www;
    if (GUI.Button(Rect(500,200,250,100),www.texture)){
        Debug.Log("Image LOAD");
    }   
}

1 个答案:

答案 0 :(得分:2)

每帧都调用OnGUI()来更新传统的Unity UI系统。当场景在Start()中加载时,您应该加载一次纹理,或者更好地在需要使用此纹理的场景之前的某处加载纹理。通常,如果要加载任何动态资源,则应在应用启动时或在场景之间的加载场景中执行此操作。

以下是如何在Start()中执行此操作(我不使用Unityscript / js,因此我的语法可能有误):

public bool isLoaded = false;
function Start() {
    StartCoroutine(LoadResources());
}

function LoadResources() {
    var url = "http://images.wisegeek.com/duck.jpg";
    var www : WWW = new WWW (url);
    yield www;
    if (www.error == null) {
        isLoaded = true;            
    }
}

function OnGUI() {
    if (isLoaded) {
    if (GUI.Button(Rect(500,200,250,100),www.texture)){
        Debug.Log("Button pressed");
    }
}

另一方面:不要使用传统的Unity UI系统。请改用new UnityEngine.UI(或第三方UI系统)。使用OnGUI的旧系统并不适合在游戏中使用。此外,新系统更易于使用且功能更强大。