C# 如何使文本读取代码每隔几秒钟执行一次?出于某些原因,为强制更新创建单独的按钮也不起作用

C# 如何使文本读取代码每隔几秒钟执行一次?出于某些原因,为强制更新创建单独的按钮也不起作用,c#,unity3d,graph,C#,Unity3d,Graph,我正在运行一个图形代码,从存储的txt文件中获取数据。我已经尝试了一段时间,使它读取文件,并在按下按钮或每隔几秒钟执行代码,但我无法使它工作 无论我做什么,图形都会显示仅在唤醒状态下加载的数据 //public class stuff related to the loading of the txt file List<string> TextAssetToList(TextAsset textFile) {

我正在运行一个图形代码,从存储的txt文件中获取数据。我已经尝试了一段时间,使它读取文件,并在按下按钮或每隔几秒钟执行代码,但我无法使它工作

无论我做什么,图形都会显示仅在唤醒状态下加载的数据

//public class stuff related to the loading of the txt file
        List<string> TextAssetToList(TextAsset textFile)
        {            
            return new List<string>(textFile.text.Split('\n'));
        }

 //all inside Awake
        {

            TextAsset File = Resources.Load("File") as TextAsset; //turning text asset into string list

            List<string> valueListTXT = TextAssetToList(textFile);

            valueListTXT.RemoveAll(item => item.Length == 0);


            List<float> valueList = valueListTXT.Select(x => float.Parse(x)).ToList();

            valueListTXT.RemoveAll(item => item.Length == 0);

            ShowGraph(valueList, LineGraphVisual, -1, (float _i) => "" + (_i + 1), (float _f) => (_f) + "°c");
        }

//与txt文件加载相关的公共类内容
列表文本资产列表(文本资产文本文件)
{            
返回新列表(textFile.text.Split('\n'));
}
//所有人都醒着
{
TextAsset File=Resources.Load(“文件”)为TextAsset;//将文本资源转换为字符串列表
列表值ListTXT=TextAssetToList(textFile);
valueListTXT.RemoveAll(item=>item.Length==0);
List valueList=valueListTXT.Select(x=>float.Parse(x)).ToList();
valueListTXT.RemoveAll(item=>item.Length==0);
ShowGraph(值列表、线图可视,-1,(浮点数i)=>“”+((浮点数i+1),(浮点数f)=>((浮点数f)+“°c”);
}
编辑:在尝试使其工作时发现另一个问题:考虑只是销毁,然后启动MonoBehavior,但由于某些原因,它没有考虑更新的txt文件,只是不断堆积游戏对象,图形是用这些对象构建的。
我根据CodeMonkey教程制作了这个图,如果这对任何人都有帮助的话…

有多种方法可以做到这一点

您可以与WaitForSeconds进行协作:

private IEnumerator DoSomethingEveryCoupleOfSeconds()
{
    yield return new WaitForSeconds(3.0f);

    //after waiting for 3 seconds ... execute my code...
}
或者,您可以缓存一个计时器,向其中添加增量时间,然后仅在计时器启动时执行,如下所示:

private void Update()
{
    timeSince += Time.deltaTime;

    if(timeSince >= 3.0f)
    {
        //execute my code
        timeSince = 0f;
    }
}
或者甚至可以使用Invoke:

private void Awake()
{
    InvokeRepeating("MyCode",3.0f,3.0f);
}
我希望这有助于……:)