【问题标题】:How can I continuously load the position data from .txt file?如何从 .t​​xt 文件中连续加载位置数据?
【发布时间】:2016-05-30 15:50:21
【问题描述】:

在 Unity3D 中,我想从文本文件中加载位置数据。 这是文本文件的示例。

data_01.txt

1; -5; -10

data_02.txt

2; 2; 5

data_03.txt

3; 2; 4

.......

所有文件都是 1 行。

我想将这些数据输入到一个对象中。

我想每 1 秒加载 30 个文本文件。 有代码保存位置数据。

 public void    Start()

 {
     try
     {
         System.IO.StreamWriter    saveFile = new System.IO.StreamWriter("savefile.txt", false);
         Transform[]    transforms = GameObject.FindObjectsOfType(typeof(Transform)) as Transform[];
         foreach (Transform t in transforms)
         {
             this.saveFile.WriteLine(t.position);
         }
     }
     catch (System.Exception ex)
     {
         Debug.Log(ex.Message);
     }
     finally
     {
         saveFile.Close();
     }
 }

Unity中如何实现代码连续加载位置数据?

【问题讨论】:

  • 只是出于好奇:你为什么要这样做?这听起来效率很低。
  • @GunnarB。是的,非常非常低效。他的游戏机制可能是看计算机的 SSD 能持续多久。级别 1 是每 1 秒 30 个文本文件。第 2 级是每 1 秒 50,000 个文本文件。第 3 级是每 1 秒 500,000 个文本文件。每个级别都会增加文件写入量。
  • @GunnarB。因为模拟程序每秒给我 1 个文本数据....
  • 是来自统一还是一些外部程序?实时?
  • 模拟程序是定制的还是第三方的东西?我会看看是否可以从该程序创建一些流到您的统一程序并且不要将内容保存在文件中。我认为这主要与 c# 相关。

标签: unity3d position load text-parsing continuous


【解决方案1】:

您可以在使用 System.IO 的地方编写一些代码并使用它来读取文本文件。然后您可以使用正则表达式将字符串拆分为分号。这是一些示例代码。代码是在我的 iPhone 上编写的,所以可能并不完美。

using System.io
using System.Regex
using unityengine;

StreamReader reader = new StreamReader("file name");

String read = reader.Read();
String[] points = Regex.Split(read,";");
//now you can use the points array to visualize your data

您可能需要将它放在 for 循环中以获取所有文件,但这应该可以。还请告诉我代码中的任何错误,我会尽力修复它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2014-07-14
    • 2012-06-03
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多