当前位置: 首页 > article >正文

unity实时保存对象的位姿,重新运行程序时用最后保存的数据给物体赋值

using UnityEngine;
using System.IO;
// using System.Xml.Serialization;
public class SaveCoordinates : MonoBehaviour
{


    public GameObject MainObject;

    //读取坐标
    private float x;
    private float y;
    private float z;
    private Quaternion quaternion;

    private void Start()
    {

    //D:\BUFFER\Unity\DLLProject01\Assets\Plugins
        string[] lines = File.ReadAllLines("Assets\\Plugins\\coordinates.txt");

        for (int i = 1; i < lines.Length; i++)
        {
            string[] parts = lines[i].Split('=');
            string variable = parts[0].Trim();
            string value = parts[1].Trim();
            //print(variable + "===" + value);
            if (variable == "x")
            {
                x = float.Parse(value);
            }
            else if (variable == "y")
            {
                y = float.Parse(value);
            }
            else if (variable == "z")
            {
                z = float.Parse(value);
            }
            else if (variable == "quax")
            {
                quaternion.x = float.Parse(value);
            }
            else if (variable == "quay")
            {
                quaternion.y = float.Parse(value);
            }
            else if (variable == "quaz")
            {
                quaternion.z = float.Parse(value);
            }
            else if (variable == "quaw")
            {
                quaternion.w = float.Parse(value);
            }

        }
        MainObject.transform.position = new Vector3(x, y, z);
        MainObject.transform.rotation = quaternion;
    }


    void Update()
    {

         // 获取 MainObject 的位置坐标
        
        float quax = -MainObject.transform.localRotation.x;
        float quay = MainObject.transform.localRotation.y;
        float quaz = -MainObject.transform.localRotation.z;
        float quaw = MainObject.transform.localRotation.w;

        float x = MainObject.transform.position.x;
        float y = -MainObject.transform.position.y;
        float z = MainObject.transform.position.z;


        // 打开文件,以写入模式写入文本内容
        using (var file = System.IO.File.CreateText("Assets\\Plugins\\coordinates.txt"))
        {
            // 将三个坐标值以空格分隔,并写入文件

            file.Write("[PositionRotation]" + "\n");
            file.Write("x=" + x + "\n");
            file.Write("y=" + y + "\n");
            file.Write("z=" + z + "\n");

            file.Write("quax=" + quax + "\n");
            file.Write("quay=" + quay + "\n");
            file.Write("quaz=" + quaz + "\n");
            file.Write("quaw=" + quaw + "\n");

        }
        
    }



}

txt文件

[PositionRotation]
x=0
y=3.3
z=0.16
quax=0
quay=0
quaz=0
quaw=1
 


http://www.kler.cn/a/149768.html

相关文章:

  • 无人机动力测试台如何快速外接第三方传感器
  • 【Python TensorFlow】进阶指南(续篇一)
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)
  • 计算机新手练级攻略——如何搜索问题
  • 攻防世界37-unseping-CTFWeb
  • 全球碳循环数据集(2000-2023)包括总初级生产力、生态系统净碳交换和生态系统呼吸变量
  • UDP接收报文函数recvfrom和UDP发送报文函数sendto
  • runapi的学习记录
  • MySQL分页查询方法及优化
  • PAT-10道题
  • Fortinet 发布《2024 年网络威胁趋势预测报告》 攻击精准性、复杂性将显著提升
  • 嵌入式设备与PC上位机通信协议设计的几点原则
  • Vue中使用正则表达式进行文本匹配和处理的方法
  • 优化器原理——权重衰减(weight_decay)
  • CodeTON Round #7 (Div. 1 + Div. 2)
  • 景联文科技加入中国人工智能产业联盟(AIIA)数据委员会
  • ELK---filebeat日志收集工具
  • 手势识别4:C/C++实现手部检测和手势识别(含源码下载)
  • 接口测试用例编写和接口测试模板
  • 零代码连接钉钉宜搭与用友U8,让业财数据管理简单高效
  • Python自动化测试数据驱动解决数据错误
  • 修改Linux系统的网络参数
  • SerializationException异常产生原因及解决方案
  • 计算机人机界面
  • CSS特效021:蛇形左右扭动的效果
  • 哈希思想应用【C++】(位图,布隆过滤器,海量数据处理面试题)