Сохранение объектов в коде , и открывание их в другом коде .

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 16:30

Ребята помогите понять пожалуйста ! Я в игре буду создавать фигуры типа квадрат , и хочу их сохранять . И изучил методы
1 AssetDatabase.CreateAsset(cube.cube, "Assets/Prefabs");
2 PrefabUtility.SaveAsPrefabAsset(cube.cube, path);
3 PrefabUtility.SaveAsPrefabAssetAndConnect(cube.cube, path, InteractionMode.AutomatedAction , out bool ssucces);

Не один не работает и не сохраняет Prefab . Тупо выбивает из программы .

И я вообще не знаю если это то что мне нужно , в компилированной игре будет ли это работать ? Это получается сохранение игры но только объектов , я не знаю если это одно и тоже .

И второй вопрос , мне надо будет использовать этот объект в другой сцене , как можно при запуске сцены открыть все объекты из определённой папке ? Что-то вроде отпарсить папку и открыть все что там есть ?

Friend123 , seaman достаточно интересный вопрос ?
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение seaman 13 фев 2019, 17:05

Вопрос может быть кому-нибудь и интересным, но...
1. Вы сами ничего не сделали, а просите, чтобы сделали другие. Это автоматом вопрос в "Почемучку".
2. Вопрос явно показывает, что Вы новичок. Все что Вы тут привели работает в редакторе, не в игре. Чтобы сохранить в игре объект нужно сделать больше телодвижений и больше знать.
PS: если просто кубик - это Вы можете сделать, просто нужно подучиться чуток.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 17:29

seaman писал(а):Вопрос может быть кому-нибудь и интересным, но...
1. Вы сами ничего не сделали, а просите, чтобы сделали другие. Это автоматом вопрос в "Почемучку".
2. Вопрос явно показывает, что Вы новичок. Все что Вы тут привели работает в редакторе, не в игре. Чтобы сохранить в игре объект нужно сделать больше телодвижений и больше знать.
PS: если просто кубик - это Вы можете сделать, просто нужно подучиться чуток.


Дайте пожалуйста ссылку где я могу выучить как можно сохранить объект в игре . Вы доказали что я новичок бесспорно , дайте пожалуйста ссылку где я могу прочитать как сохранить объект в игре пожалуйста ! Был бы я опытным я бы не писал бы . Seaman разве я прошу что бы за меня сделали другие ? Я вас спросил как это можно сделать , все что вы сделали это ткнули на меня что я новичок , сказали что я хочу что бы за меня сделали другие и указали что я не правильно делал . Ну а на вопрос вы так и не ответили , как это можно сделать !
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение seaman 13 фев 2019, 18:02

seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение Jarico 13 фев 2019, 18:23

seaman писал(а):http://unity3d.ru/distribution/viewtopic.php?f=13&t=1039&p=7708&hilit=save#p7708


Старьё которое для него очень сложное... Есть вариант проще


Синтаксис:
Используется csharp

//структура объекта
public struct myObject
{
public Vector3 position;
public Quaternion rotation;
public Vector3 scale;
public enum ObjectType
{
Cube,
Sphere,
Plane,
Capsule
}

}

public List<myObject> objects;


//парсинг листа в строку JSON
string json = JsonUtility.ToJson(objects);
//запись в файл
File.WriteAllText(path);

//чтение строки JSON из файла
string json = File.ReadAllText(path);

//парсинг из JSON в List<myObject>
objects = JsonUtility.FromJson<List<myObject>>(json);

 


Если он не полный дурак то поймёт как это использовать
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение Friend123 13 фев 2019, 19:19

Да если я правильно понял задачу, то тут нужно банально использовать сериализацию (сохранение/загрузка).
Подобную штуку я кодил, когда делал свой редактор карты для игры (там и из редактора можно было сохранить и из игры непосредственно)
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 19:33

seaman писал(а):http://unity3d.ru/distribution/viewtopic.php?f=13&t=1039&p=7708&hilit=save#p7708


Спасибо Большое ! Я знал об этом варианте и другой даже придумал ! Но я должен был спросить что обычно используют что бы не изобретать велосипед , что бы знать все возможные варианты ! Спасибо большое ! А мой вариант был использовать PlayerPrefs.SetInt("date", 1); для сохранение параметров и создание динамически в игре объектов и присваивать им эти параметры , типа transform.position и transform.localScale . И это после того как Вы сказали что эти методы которые я пробовал не подходят ! Спасибо большое за то что Вы это сказали и за ссылку на материал ! А как Вам мой вариант ? За то не будет занимать памяти ! Будет все создаваться динамически !

Спасибо большое всем ! Всё очень полезно !
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 19:50

Jarico писал(а):
seaman писал(а):http://unity3d.ru/distribution/viewtopic.php?f=13&t=1039&p=7708&hilit=save#p7708


Старьё которое для него очень сложное... Есть вариант проще


Синтаксис:
Используется csharp

//структура объекта
public struct myObject
{
public Vector3 position;
public Quaternion rotation;
public Vector3 scale;
public enum ObjectType
{
Cube,
Sphere,
Plane,
Capsule
}

}

public List<myObject> objects;


//парсинг листа в строку JSON
string json = JsonUtility.ToJson(objects);
//запись в файл
File.WriteAllText(path);

//чтение строки JSON из файла
string json = File.ReadAllText(path);

//парсинг из JSON в List<myObject>
objects = JsonUtility.FromJson<List<myObject>>(json);

 


Если он не полный дурак то поймёт как это использовать


За код конечно Тебе Спасибо ! А за дурака конечно хотелось бы Тебе хлебало размазать ! Я что с Тобой разговаривал без уважение или если я не знаю как или переспрашиваю на всякий случай кого-то , может ещё варианты есть , по этому я дурак ? Ты хотел показать свой ум Брат ?
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 21:23

Ребята это строка тупа не работает ! Не знаете почему ?

Синтаксис:
Используется csharp
File.WriteAllText("C:/Users/1/Desktop", "1");
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение Ziza 13 фев 2019, 21:36

fillzest писал(а):Ребята это строка тупа не работает ! Не знаете почему ?
Синтаксис:
Используется csharp
File.WriteAllText("C:/Users/1/Desktop", "1");

Потому что вы строку хотите сохранить напрямую на рабочий стол, а не в файл. И в винде вроде надо пользоваться обратным слешем для указания пути, хотя может и не обязательно х.з.)
Синтаксис:
Используется csharp
File.WriteAllText(@"c:\1.txt", "1");
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 13 фев 2019, 22:20

Ziza Спасибо Большое ! Я как раз видел в примере что путь надо ставить до файла чуть ранее , и я ещё по думал вот почему наверное не получалось создать Prefab . И тут тоже самое не указал файл ! Спасибо Большое ! По части слэша мне Visual Studio пишет ошибку когда ставлю как в Windows по этому поменял ! Спасибо Большое !
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 14 фев 2019, 08:36

Я хочу акцентировать все методы которыми можно сохранить объекты и игру . Если есть что добавить , добавляйте пожалуйста .

1 Сериализация .
2 Записывание в байтах .
3 Записывание в текст .
4 Записывание в XML .
5 Записывание в Json .

В частности для Unity3d

6 AssetDatabase.CreateAsset(cube.cube, "Assets/Prefabs");
7 PrefabUtility.SaveAsPrefabAsset(cube.cube, path);
8 PrefabUtility.SaveAsPrefabAssetAndConnect(cube.cube, path, InteractionMode.AutomatedAction , out bool ssucces);
9 PlayerPref.SetInt(1);


Ещё есть варианты ?
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 14 фев 2019, 08:44

Seaman можно спросить Вас , пеочему нельзя использовать эти методы для сохранение объектов в игре ? Потому что это технический не возможно или потому что это не оптимизирована ?

1 AssetDatabase.CreateAsset(cube.cube, "Assets/Prefabs");
2 PrefabUtility.SaveAsPrefabAsset(cube.cube, path);
3 PrefabUtility.SaveAsPrefabAssetAndConnect(cube.cube, path, InteractionMode.AutomatedAction , out bool ssucces);
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение Ziza 14 фев 2019, 08:59

fillzest писал(а):Я хочу акцентировать все методы которыми можно сохранить объекты и игру . Если есть что добавить , добавляйте пожалуйста .
...
В частности для Unity3d
6 AssetDatabase.CreateAsset(cube.cube, "Assets/Prefabs");
7 PrefabUtility.SaveAsPrefabAsset(cube.cube, path);
8 PrefabUtility.SaveAsPrefabAssetAndConnect(cube.cube, path, InteractionMode.AutomatedAction , out bool ssucces);
9 PlayerPref.SetInt(1);

Эти методы не для сохранения объектов и игры)
6, 7, 8 - для создания ассетов/префабов внутри редактора, то есть для того чтобы писать плагины/расширения для Unity, а не для применения в своей игре. В рантайме они даже работать не будут.
9 - хоть и можно что-то сохранить, но для этого не предназначен. Даже само название класса PlayerPref - говорит само за себя, что его следует использовать для сохранения настроек плеера, а не самой игры. Можно заюзать для сохранения разве что в какой-нибудь маленькой игре, где кроме уровня и очков больше сохранять ничего не надо, но уж точно не для PC игр, в реестр данные об объектах пихать это перебор ;)

fillzest писал(а):Ещё есть варианты ?

база данных, например
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Сохранение объектов в коде , и открывание их в другом коде .

Сообщение fillzest 14 фев 2019, 09:19

Ziza Спасибо Большое !
fillzest
UNITрон
 
Сообщения: 156
Зарегистрирован: 10 апр 2017, 18:39

След.

Вернуться в Почемучка

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

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