c# - 如何从 Unity 中的另一个脚本(使用 IEnumerator)获取值?

标签 c# unity3d

我想从另一个脚本中获取一个脚本中的值。我有两个脚本:

public class CargarDatos : MonoBehaviour
{
    public string[] fechas;
    public string dia;

    IEnumerator Start()
    {
        UnityWebRequest www = UnityWebRequest.Get("http://localhost/Linx/Fechas.php");
        yield return www.SendWebRequest();
        string fechasDatos = www.downloadHandler.text;
        print(fechasDatos);
        fechas = fechasDatos.Split(';');
        dia = GetValorDatos(fechas[0], "Dia:");
        //print(dia);
    }

    string GetValorDatos(string datos, string index)
    {
        string valor = datos.Substring(datos.IndexOf(index)+index.Length);
        if(valor.Contains("|"))
        {
           valor = valor.Remove(valor.IndexOf("|")); 
        }
        return valor;
    }
}

这里,如图所示,建立了到数据库的连接并获取值 (dia)。该脚本附加到主摄像头,因为我只希望它在游戏开始时连接。在这里,函数 print(dia) 返回正确的值,因此该脚本有效。

问题是当我尝试获取此脚本中的值时:

public class BarraExperiencia : MonoBehaviour
{
    void Start()
    {
        print(GameObject.Find("Main Camera").GetComponent<CargarDatos>().dia);
    }
}

这个脚本附在一个 slider 上,我试着打印它看它是否有效,但它没有打印任何东西。我做错了什么?谢谢。

最佳答案

我认为您正试图在协程完成之前获取“dia”值。尝试仅在协程完成后打印值。

此外,使用 FindObjectOfType 会更快获取组件。

关于c# - 如何从 Unity 中的另一个脚本(使用 IEnumerator)获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58843514/

相关文章:

c# - ASP.NET Web Api 路由中断

c# - 如何让游戏对象从列表中删除自己? (Unity3d)

unity3d - 如何统一等待特定秒数

android - 该应用程序与您的所有设备不兼容

c# - 维护 asp.net 页面的状态

c# - ASP.NET 中的可编辑 GridView

c# - PropertyGrid、DefaultValueAttribute、动态对象和枚举

c# - 提供软件设置的最佳方式?

unity3d - Unity 烘焙光照有 Blob 和立方体

unity3d - 拾取的物体移动时晃动