想记录一下小汽车的运动轨迹(可以键盘控制移动)轨迹记录在excel或csv文件内。
Unity3D本身不支持直接将物体运动轨迹记录在Excel或CSV文件内,但是有多种方式可以实现。
下面介绍一种简单的实现方式:
public class RecordPosition : MonoBehaviour
{
public Vector3 currentPos;
...
void Update()
{
// 每一帧记录该物体的当前位置
currentPos = transform.position;
}
}
public class RecordPosition : MonoBehaviour
{
...
public void RecordToCSV()
{
string filePath = Application.dataPath + "/position.csv"; // 文件路径
StreamWriter sw = new StreamWriter(filePath, true); // 追加模式
string line = string.Format("{0},{1},{2}", currentPos.x, currentPos.y, currentPos.z); // 将位置转化为CSV格式的一行
sw.WriteLine(line); // 写入文件
sw.Close(); // 关闭文件
}
}
希望这个简单的示例可以对你有所帮助。当然,这只是一种基本的实现方式,具体实现还需要根据实际需求进行适当的修改和完善。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class RecordObjectTrajectory : MonoBehaviour
{
public float recordRate = 0.1f; // 每隔0.1秒记录一次
public string filePath = "trajectory.txt"; // 文件路径
private float recordTimer;
private StreamWriter writer;
void Start()
{
// 打开文件写入器
writer = new StreamWriter(filePath, false);
}
void Update()
{
recordTimer += Time.deltaTime;
if (recordTimer > recordRate)
{
// 记录物体的位置
writer.WriteLine(transform.position);
recordTimer = 0;
}
}
void OnApplicationQuit()
{
// 关闭文件写入器
writer.Close();
}
}
这段代码将在每隔0.1秒记录一次物体的位置,并将其写入指定的文件中。当应用程序退出时,文件写入器将关闭,确保数据已经保存到文件中。