将unity中相机位置保存保存到服务器
public Transform cameraTransform;
void Start ( )
{
}
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 ) ;
}
public Vector3 StringToVector3 ( string sVector)
{
if ( sVector. StartsWith ( "(" ) && sVector. EndsWith ( ")" ) )
{
sVector = sVector. Substring ( 1 , sVector. Length - 2 ) ;
}
string [ ] sArray = sVector. Split ( ',' ) ;
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 ;
public class CameraSaveLoad : MonoSingleton< CameraSaveLoad>
{
public Transform cameraTransform;
public string saveFileName = "camera_view.json" ;
public InputField viewNameInput;
public Button surebtn;
public Dictionary< string , CameraView> CamerViewDic = new Dictionary< string , CameraView> ( ) ;
void Start ( )
{
LoadDeviceDic ( ) ;
surebtn. onClick. AddListener ( SaveCameraPosition) ;
}
public class CameraView
{
public string name;
public string position;
public string rotation;
}
public Vector3 StringToVector3 ( string sVector)
{
if ( sVector. StartsWith ( "(" ) && sVector. EndsWith ( ")" ) )
{
sVector = sVector. Substring ( 1 , sVector. Length - 2 ) ;
}
string [ ] sArray = sVector. Split ( ',' ) ;
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) ;
}
}
public 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. 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" ) ;
if ( File. Exists ( filePath) )
{
string json = File. ReadAllText ( filePath) ;
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. Log ( "Key: " + pair. Key + ", Value: " + pair. Value + ", " + pair. Value) ;
}
}
else
{
Debug. LogError ( "Dictionary data file not found!" ) ;
}
}
}