我正在尝试从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");
}
}
答案 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的旧系统并不适合在游戏中使用。此外,新系统更易于使用且功能更强大。