【问题标题】:Add texture into a button from URL从 URL 将纹理添加到按钮中
【发布时间】:2015-06-13 20:03:42
【问题描述】:

我正在尝试从 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");
    }   
}

【问题讨论】:

    标签: user-interface unity3d unityscript


    【解决方案1】:

    每帧都会调用 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 的旧系统并不适合在游戏中使用。此外,新系统更易于使用且功能更强大。

    【讨论】:

    • 非常感谢你!我知道新的 UnityEngine.UI 更好.. 但是我必须完成一个全部使用旧版本的项目.. :) 通过更改一些语法,它可以正常工作! :)
    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2017-04-09
    相关资源
    最近更新 更多