1max1 писал(а):Синтаксис:Используется csharpusing UnityEngine;
using System.Collections.Generic;
[System.Serializable]
class Track
{
public List<Vector3> positions = new List<Vector3>();
public List<Quaternion> rotations = new List<Quaternion>();
public List<float> times = new List<float>();
public void Add(Vector3 position, Quaternion rotation, float time)
{
positions.Add(position);
rotations.Add(rotation);
times.Add(time);
}
}
class test : MonoBehaviour
{
void Start()
{
Track t = new Track();
t.Add(Vector3.zero, Quaternion.identity, 0.0f);
t.Add(Vector3.zero, Quaternion.identity, 10.0f);
t.Add(Vector3.zero, Quaternion.identity, 20.0f);
var save = JsonUtility.ToJson(t);
PlayerPrefs.SetString("Save", save);
var load = JsonUtility.FromJson<Track>(PlayerPrefs.GetString("Save"));
print(load.times[2]);
}
}
Спасибо большое!!
Но чет я так и не смог применить правильно в свой скрипт, ничего не происходит на мобильном устройстве.
вот такой костыль я сделал:
Синтаксис:
Используется csharp
using UnityEngine;
public class PointTime{
public Vector3 position;
public Vector3 scale;
public Quaternion rotation;
public string nname;
public float time;
public PointTime (Vector3 pos, Quaternion rot, Vector3 scl, float tt){
position = pos;
rotation = rot;
scale = scl;
time = tt;
}
}
public class PointTime{
public Vector3 position;
public Vector3 scale;
public Quaternion rotation;
public string nname;
public float time;
public PointTime (Vector3 pos, Quaternion rot, Vector3 scl, float tt){
position = pos;
rotation = rot;
scale = scl;
time = tt;
}
}
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TrackCam : MonoBehaviour {
public GameObject camPos;
public GameObject camPlayPos;
public RecScreen rec;
List<PointTime> pointsTime;
List<PointTime> pointsLocTime;
int tt = 0;
void Start () {
pointsTime = new List<PointTime> ();
pointsLocTime = new List<PointTime> ();
}
void FixedUpdate () {
if (rec.recording) {
RecTrack ();
} else {
SaveTrack ();
}
if (playTrackink) {
PlayTrack ();
camPos.SetActive (false);
camPlayPos.SetActive (true);
} else {
camPos.SetActive (true);
camPlayPos.SetActive (false);
}
}
void RecTrack (){
pointsTime.Add ( new PointTime (camPos.transform.position, camPos.transform.rotation, camPos.transform.localScale, +1f));
}
class Track
{
public List<PointTime> po = new List<PointTime>();
}
void SaveTrack(){
var save = JsonUtility.ToJson(pointsTime);
PlayerPrefs.SetString("Save", save);
pointsTime.Clear ();
LoadSaveTr ();
}
void LoadSaveTr(){
var load = JsonUtility.FromJson<Track>(PlayerPrefs.GetString("Save"));
pointsTime = load.po;
}
void PlayTrack (){
tt += 1;
if (pointsTime.Count > 0 && tt < pointsTime.Count) {
PointTime ppp = pointsTime [tt];
camPlayPos.transform.position = ppp.position;
camPlayPos.transform.rotation = ppp.rotation;
camPlayPos.transform.localScale = ppp.scale;
}
}
}
А как можно обратно перевести сохраненный лист, в обычный лист?
И что можете сказать про ArrayPrefs2, удобниее ли это использовать?