Страница 1 из 2

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

СообщениеДобавлено: 13 фев 2019, 16:30
fillzest
Ребята помогите понять пожалуйста ! Я в игре буду создавать фигуры типа квадрат , и хочу их сохранять . И изучил методы
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 достаточно интересный вопрос ?

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

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

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

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


Дайте пожалуйста ссылку где я могу выучить как можно сохранить объект в игре . Вы доказали что я новичок бесспорно , дайте пожалуйста ссылку где я могу прочитать как сохранить объект в игре пожалуйста ! Был бы я опытным я бы не писал бы . Seaman разве я прошу что бы за меня сделали другие ? Я вас спросил как это можно сделать , все что вы сделали это ткнули на меня что я новичок , сказали что я хочу что бы за меня сделали другие и указали что я не правильно делал . Ну а на вопрос вы так и не ответили , как это можно сделать !

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

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

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

СообщениеДобавлено: 13 фев 2019, 18:23
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);

 


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

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

СообщениеДобавлено: 13 фев 2019, 19:19
Friend123
Да если я правильно понял задачу, то тут нужно банально использовать сериализацию (сохранение/загрузка).
Подобную штуку я кодил, когда делал свой редактор карты для игры (там и из редактора можно было сохранить и из игры непосредственно)

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

СообщениеДобавлено: 13 фев 2019, 19:33
fillzest
seaman писал(а):http://unity3d.ru/distribution/viewtopic.php?f=13&t=1039&p=7708&hilit=save#p7708


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

Спасибо большое всем ! Всё очень полезно !

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

СообщениеДобавлено: 13 фев 2019, 19:50
fillzest
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);

 


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


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

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

СообщениеДобавлено: 13 фев 2019, 21:23
fillzest
Ребята это строка тупа не работает ! Не знаете почему ?

Синтаксис:
Используется csharp
File.WriteAllText("C:/Users/1/Desktop", "1");

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

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

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

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

СообщениеДобавлено: 13 фев 2019, 22:20
fillzest
Ziza Спасибо Большое ! Я как раз видел в примере что путь надо ставить до файла чуть ранее , и я ещё по думал вот почему наверное не получалось создать Prefab . И тут тоже самое не указал файл ! Спасибо Большое ! По части слэша мне Visual Studio пишет ошибку когда ставлю как в Windows по этому поменял ! Спасибо Большое !

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

СообщениеДобавлено: 14 фев 2019, 08:36
fillzest
Я хочу акцентировать все методы которыми можно сохранить объекты и игру . Если есть что добавить , добавляйте пожалуйста .

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);


Ещё есть варианты ?

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

СообщениеДобавлено: 14 фев 2019, 08:44
fillzest
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);

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

СообщениеДобавлено: 14 фев 2019, 08:59
Ziza
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 писал(а):Ещё есть варианты ?

база данных, например

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

СообщениеДобавлено: 14 фев 2019, 09:19
fillzest
Ziza Спасибо Большое !