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

将unity中相机位置保存为json 文件或者 发送给后端

将unity中相机位置保存保存到服务器

///相机的位置public Transform cameraTransform;void Start(){// SaveCameraPosition("sd");// ("{\"name\":\"sd\",\"position\":\"(0.00, 5.00, -12.00)\",\"rotation\":\"(25.00, 0.00, 0.00)\"});}///保存数据public void SaveCameraPosition(string viewname){if (!string.IsNullOrEmpty(viewname)){CameraView cameraView = new CameraView();cameraView.name = viewname;cameraView.position = cameraTransform.position.ToString();cameraView.rotation = cameraTransform.rotation.eulerAngles.ToString();string oko = JsonUtility.ToJson(cameraView);Application.ExternalCall("ReciveViwe", oko.ToString()) ;}}///解析数据public void ParsingCameraViewdata(string json){CameraView jsonData = JsonMapper.ToObject<CameraView>(json);Debug.Log("pos:"+jsonData.position+"rot:"+ jsonData.rotation);Vector3 po = StringToVector3(jsonData.position);Vector3 ro = StringToVector3(jsonData.rotation);MaxCamera.instance_.ModelMove(po, Quaternion.Euler(ro.x, ro.y, 0), 0.5f);//  GameManager.Instance.SettingCamera(po, ro);}// 字符串转为 v3public Vector3 StringToVector3(string sVector){// 移除字符串中的括号if (sVector.StartsWith("(") && sVector.EndsWith(")")){sVector = sVector.Substring(1, sVector.Length - 2);}// 拆分字符串为单独的值string[] sArray = sVector.Split(',');// 创建Vector3并返回return new Vector3(float.Parse(sArray[0]),float.Parse(sArray[1]),float.Parse(sArray[2]));}public class CameraView{public string name;public string position;public string rotation;}

将相机位置保存为json

using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
/// <summary>
/// 保存数据为json
/// </summary>
public class CameraSaveLoad : MonoSingleton<CameraSaveLoad>
{public Transform cameraTransform; // 相机的Transform组件public string saveFileName = "camera_view.json"; // 保存文件的名称public InputField viewNameInput; // 用于输入视角名称的UI InputFieldpublic Button surebtn;public Dictionary<string, CameraView> CamerViewDic = new Dictionary<string, CameraView>();// Start is called before the first frame updatevoid Start(){LoadDeviceDic();surebtn.onClick.AddListener(SaveCameraPosition);}public class CameraView{public string name;public string position;public string rotation;}/// <summary>/// 解析数据 字符串转v3/// </summary>/// <param name="sVector"></param>/// <returns></returns>public Vector3 StringToVector3(string sVector){// 移除字符串中的括号if (sVector.StartsWith("(") && sVector.EndsWith(")")){sVector = sVector.Substring(1, sVector.Length - 2);}// 拆分字符串为单独的值string[] sArray = sVector.Split(',');// 创建Vector3并返回return new Vector3(float.Parse(sArray[0]),float.Parse(sArray[1]),float.Parse(sArray[2]));}public void SaveCameraPosition(){string viewName = viewNameInput.text;if (!string.IsNullOrEmpty(viewName)){CameraView cameraView = new CameraView{name = viewName,position = cameraTransform.position.ToString(),rotation = cameraTransform.rotation.eulerAngles.ToString()};AddCameratrToDic(viewName, cameraView);}}
/// 将数据保存为jsonpublic void AddCameratrToDic(string viewname, CameraView viewdate){if (!CamerViewDic.ContainsKey(viewname)){CamerViewDic.Add(viewname, viewdate);SaveCamerViewDicTojson(CamerViewDic);}else{CamerViewDic[viewname] = viewdate;SaveCamerViewDicTojson(CamerViewDic);}}public void Delel(){// string filePath = Path.Combine(Application.streamingAssetsPath, "example.txt");string filePath = Path.Combine(Application.persistentDataPath, "camera_view.json");// 检查文件是否存在if (File.Exists(filePath)){File.Delete(filePath);Debug.Log("文件已删除:" + filePath);}}public void SaveCamerViewDicTojson(Dictionary<string, CameraView> valuePairs){JsonData jsonData = JsonMapper.ToJson(valuePairs);Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");var ss = reg.Replace(jsonData.ToString(), delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });string filePath = Path.Combine(Application.streamingAssetsPath, "camera_view.json");File.WriteAllText(filePath, jsonData.ToString());Debug.Log("Dictionary data saved to: " + filePath);}public void LoadDeviceDic(){string filePath = Path.Combine(Application.streamingAssetsPath, "camera_view.json");//var uri = new System.Uri(Path.Combine(Application.streamingAssetsPath, "camera_view.json"));//UnityWebRequest request = UnityWebRequest.Get(uri);//yield return request.SendWebRequest();//if (request.isNetworkError)//{//    Debug.Log(request.error);//}//else//{//    string jsonStr = request.downloadHandler.text;//    CamerViewDic = JsonMapper.ToObject<Dictionary<string, CameraView>>(jsonStr);//    foreach (var pair in CamerViewDic)//    {//        Vector3 po = StringToVector3(pair.Value.position);//        Debug.LogError("po" + po.ToString());//        Debug.Log("Key: " + pair.Key + ", Value: " + pair.Value + ", " + pair.Value);//    }//} 检查文件是否存在if (File.Exists(filePath)){// 从文件中读取 JSON 数据string json = File.ReadAllText(filePath);// 将 JSON 数据转换为字典CamerViewDic = JsonMapper.ToObject<Dictionary<string, CameraView>>(json);Debug.Log("Dictionary data loaded from: " + filePath);// 示例:输出加载的数据foreach (var pair in CamerViewDic){Vector3 po = StringToVector3(pair.Value.position);//  Debug.LogError("po" + po.ToString());Debug.Log("Key: " + pair.Key + ", Value: " + pair.Value + ", " + pair.Value);}}else{Debug.LogError("Dictionary data file not found!");}// DeviceManager.GetInstance().myDictionary;}}
http://www.lryc.cn/news/344029.html

相关文章:

  • vue2-表单组件封装
  • 智能家居4 -- 添加接收消息的初步处理
  • Python selenium
  • Python内置函数next()详解
  • 初识指针(1)<C语言>
  • uniapp使用vconsole调试 兼容App
  • 论文笔记模版
  • docker-本地私有仓库、harbor私有仓库部署与管理
  • 【Go 语言入门专栏】Go 语言的起源与发展
  • 发电机组远程管理,提升管控力,降低运维成本
  • java将文件压缩打包后进行下载
  • 【4/26-4/30】 Arxiv安全类文章速览
  • 活动图与状态图:UML中流程图的精细化表达——专业解析系统动态性与状态变迁
  • Easy TCP Analysis提供了四大特性,兼顾了TCP数据包分析入门学习到实战问题排查不同阶段用户对工具的需求
  • 【2】STM32·FreeRTOS·任务创建和删除
  • 日志审计系统在提高网络安全方面具有哪些重要的作用
  • 二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本
  • 13_Scala面向对象编程_伴生对象
  • RS485空调系统到BACnet江森楼宇系统的高效整合攻略
  • Springboot集成Redis操作缓存-06
  • 【WPF】聊聊WPF中INotifyPropertyChanged [TOC]
  • SpringBoot Actuator未授权访问漏洞的解决方法
  • AI大模型探索之路-训练篇18:大语言模型预训练-微调技术之Prompt Tuning
  • Ollamallama
  • 苹果Mac用户下载VS Code(Universal、Intel Chip、Apple Silicon)哪个版本?
  • Linux(Ubuntu)安装CGAL(非root)
  • hadoop学习---基于Hive的教育平台数据仓库分析案例(三)
  • RAFT:引领 Llama 在 RAG 中发展
  • 上海亚商投顾:沪指缩量调整 合成生物概念股持续爆发
  • Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战