Как воспроизвести лист данных?

Общие вопросы о Unity3D

Как воспроизвести лист данных?

Сообщение jimmm 24 июл 2018, 03:18

Здравствуйте.
как правильно воспроизводить лист данных?
Синтаксис:
Используется csharp

List<PointTime> pointsTime;
int t;

void Start () {
        pointsTime = new List<PointTime> ();
}
       
void RecTrack (){
        pointsTime.Insert (0, new PointTime (camPos.transform.position, camPos.transform.rotation));
}

void FixedUpdate () {
               
        if (playTrackink) {
                PlayTrack ();
                camPos.SetActive (false);
                camPlayPos.SetActive (true);
        } else {
                camPos.SetActive (true);
                camPlayPos.SetActive (false);
        }
}
void PlayTrack (){
       
        t += 1;
        if (pointsTime.Count > 0 && t < pointsTime.Count) {
                PointTime ppp = pointsTime [t];
                camPlayPos.transform.position = ppp.position;
                camPlayPos.transform.rotation = ppp.rotation;

        } else {
                playTrackink = false;
                t = 0;
        }

}
 
Последний раз редактировалось jimmm 24 июл 2018, 12:30, всего редактировалось 1 раз.
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как воспроизвести лист данных?

Сообщение ilkalawson 24 июл 2018, 11:12

как правильно воспроизводить лист данных?

что сделать?
ilkalawson
UNIверсал
 
Сообщения: 412
Зарегистрирован: 19 янв 2015, 20:38
Skype: lawsonunity

Re: Как воспроизвести лист данных?

Сообщение seaman 24 июл 2018, 11:16

У него в List записаны координаты камеры покадрово и нужно по этим данным прогонять камеру.
В чем проблема не понял...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как воспроизвести лист данных?

Сообщение jimmm 24 июл 2018, 12:21

Все воспроизводится наоборот,
и есть ли лучше-правильней способ?

вот так записываю:
Синтаксис:
Используется csharp
void RecTrack (){
        pointsTime.Insert (0, new PointTime (camPos.transform.position, camPos.transform.rotation));
}
 
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как воспроизвести лист данных?

Сообщение seaman 24 июл 2018, 12:33

Естественно. Вы вставляете в начало. Т.е. в конце записи в 0-м элементе будет последний записанный...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Как воспроизвести лист данных?

Сообщение 1max1 24 июл 2018, 13:39

А зачем insert? add ведь есть.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как воспроизвести лист данных?

Сообщение jimmm 24 июл 2018, 15:22

Спасибо понял)

А как можно в виде файлов сохранять лист, и потом его из файла же читать? Например из текстового. Но на мобильных устройствах.
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как воспроизвести лист данных?

Сообщение ilkalawson 24 июл 2018, 15:28

jimmm писал(а):Спасибо понял)

А как можно в виде файлов сохранять лист, и потом его из файла же читать? Например из текстового. Но на мобильных устройствах.

переводить всё в строки с помощью JsonUtlity и сохранять в файл.
ilkalawson
UNIверсал
 
Сообщения: 412
Зарегистрирован: 19 янв 2015, 20:38
Skype: lawsonunity

Re: Как воспроизвести лист данных?

Сообщение getAlex 24 июл 2018, 20:54

ilkalawson писал(а):переводить всё в строки с помощью JsonUtlity и сохранять в файл.


А я раньше делал через сереализацию с сохранением в бинарный вид для стандартных типов. А для не стандартных - с рефлексией всё паковал в строки, затем по первому сценарию, а потом парсил.

Если сравнить реализацию с применением утилиты, то разница разве что в типе сохранения и извлечения файла, что по сути 2-4 дополнительных метода. Не совсем понимаю для чего эта утилита.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: Как воспроизвести лист данных?

Сообщение jimmm 24 июл 2018, 22:04

А как-то по типа в плаерпрефс сохранять? Или xml?
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как воспроизвести лист данных?

Сообщение ilkalawson 24 июл 2018, 22:50

затем по первому сценарию, а потом парсил.

жуть

Хотя я и сам такую же систему написал: свойства и поля помечал атрибутом сохранения, и через рефлексию сохранял их под ключом в виде ее имени и также обратно загружал.

А как-то по типа в плаерпрефс сохранять? Или xml?

Да как хотите, но раз вам нужно именно в файл то тогда используйте второе.
ilkalawson
UNIверсал
 
Сообщения: 412
Зарегистрирован: 19 янв 2015, 20:38
Skype: lawsonunity

Re: Как воспроизвести лист данных?

Сообщение 1max1 25 июл 2018, 04:54

jimmm писал(а):А как-то по типа в плаерпрефс сохранять? Или xml?

xml Это та же строка что и json, переводишь свой класс сохранения в строку и суешь в PlayerPrefs.SetString("Save", XML или Json);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как воспроизвести лист данных?

Сообщение jimmm 26 июл 2018, 18:12

То есть получается, это тоже самое, прописывать весь лист в огромный текст как в плеерпрефс, а потом так же его расшифровывать обратно в лист?

Простите за нубность, не подскажите тутор или видео , чтоб научиться это делать??
jimmm
UNIверсал
 
Сообщения: 417
Зарегистрирован: 23 янв 2013, 22:57

Re: Как воспроизвести лист данных?

Сообщение 1max1 26 июл 2018, 18:42

Синтаксис:
Используется csharp
using 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]);
    }
}
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как воспроизвести лист данных?

Сообщение getAlex 26 июл 2018, 20:35

jimmm писал(а):То есть получается, это тоже самое, прописывать весь лист в огромный текст как в плеерпрефс, а потом так же его расшифровывать обратно в лист?

Простите за нубность, не подскажите тутор или видео , чтоб научиться это делать??

У префса ограниченный размер. К тому же, префс один на всё приложение, а если тебе нужны будут разные реплеи, как отдельные файлы, то префс сразу отпадает.
Сохраняй через JsonUtlity.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3