从 URL 向按钮添加纹理

Add texture into a button from URL

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

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

OnGUI() can not be a coroutine.)

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

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(或第 3 方 UI 系统)。使用OnGUI的旧系统不太适合在游戏中使用。此外,新系统更易于使用且功能更强大。