Сохранение класса в ScriptableObject

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

Сохранение класса в ScriptableObject

Сообщение x-mas 29 ноя 2018, 18:06

Добрый вечер! Возник вопрос про сохранение в ScriptableObject.
Почему при перезагрузке Unity ScriptableObject не сохраняет переменные, не сохраняет только в примере указанном ниже:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class testManagerClass
{
    public int _int1;
    public int _int2;
    public int _int3;
    public int _int4;
}

public class TestManager : MonoBehaviour
{
    public TestScriptableobject _testSO;

    // генерируем ради примера.
    void Start()
    {
        for (int i = 0; i < _testSO._testClass.Count; i++)
        {
            _testSO._testClass[i]._testManagerClass._int1 = Random.Range(0, 1000);
            _testSO._testClass[i]._testManagerClass._int2 = Random.Range(0, 1000);
            _testSO._testClass[i]._testManagerClass._int3 = Random.Range(0, 1000);
            _testSO._testClass[i]._testManagerClass._int4 = Random.Range(0, 1000);
        }
    }
}
 


Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[System.Serializable]
public class testClass
{
    public bool _isBool;
    public testManagerClass _testManagerClass;
}

[CreateAssetMenu(fileName = "testSO", menuName = "Create testSO", order = 50)]
public class TestScriptableobject : ScriptableObject
{
    public List<testClass> _testClass;
}
 


Чтобы решить данную проблему, я просто реализовал чуть по другому. Но вопрос почему так не работает?
Аватара пользователя
x-mas
UNец
 
Сообщения: 43
Зарегистрирован: 23 фев 2017, 12:51

Re: Сохранение класса в ScriptableObject

Сообщение KanycTa 29 ноя 2018, 19:40

x-mas писал(а):Добрый вечер! Возник вопрос про сохранение в ScriptableObject.
Почему при перезагрузке Unity ScriptableObject не сохраняет переменные, не сохраняет только в примере указанном ниже:


Он предназначен не для сохранения а для хранения!

К примеру информация о каких-либо игровых предметах (иконка, описание и т.д.)
Аватара пользователя
KanycTa
UNIт
 
Сообщения: 107
Зарегистрирован: 25 июл 2018, 18:41
Откуда: г. Ульяновск
  • Сайт

Re: Сохранение класса в ScriptableObject

Сообщение Xtir 29 ноя 2018, 19:56

KanycTa писал(а):
x-mas писал(а):Добрый вечер! Возник вопрос про сохранение в ScriptableObject.
Почему при перезагрузке Unity ScriptableObject не сохраняет переменные, не сохраняет только в примере указанном ниже:


Он предназначен не для сохранения а для хранения!

К примеру информация о каких-либо игровых предметах (иконка, описание и т.д.)


Можно я вмешаюсь? Никогда не пользовался ScriptableObject, и как-то не вижу для чего бы он мне пригодился.
Вы говорите, что он используется для хранения данных. Но ведь данные так же можно хранить в префабах. Так в чём же разница тогда?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Сохранение класса в ScriptableObject

Сообщение x-mas 29 ноя 2018, 20:01

KanycTa писал(а):
x-mas писал(а):Добрый вечер! Возник вопрос про сохранение в ScriptableObject.
Почему при перезагрузке Unity ScriptableObject не сохраняет переменные, не сохраняет только в примере указанном ниже:


Он предназначен не для сохранения а для хранения!

К примеру информация о каких-либо игровых предметах (иконка, описание и т.д.)


Но никто не запрещает сохранять в них данные.
Аватара пользователя
x-mas
UNец
 
Сообщения: 43
Зарегистрирован: 23 фев 2017, 12:51

Re: Сохранение класса в ScriptableObject

Сообщение x-mas 29 ноя 2018, 20:08

Xtir писал(а):
KanycTa писал(а):
x-mas писал(а):Добрый вечер! Возник вопрос про сохранение в ScriptableObject.
Почему при перезагрузке Unity ScriptableObject не сохраняет переменные, не сохраняет только в примере указанном ниже:


Он предназначен не для сохранения а для хранения!

К примеру информация о каких-либо игровых предметах (иконка, описание и т.д.)


Можно я вмешаюсь? Никогда не пользовался ScriptableObject, и как-то не вижу для чего бы он мне пригодился.
Вы говорите, что он используется для хранения данных. Но ведь данные так же можно хранить в префабах. Так в чём же разница тогда?


https://docs.unity3d.com/ru/520/Manual/ ... bject.html
Аватара пользователя
x-mas
UNец
 
Сообщения: 43
Зарегистрирован: 23 фев 2017, 12:51

Re: Сохранение класса в ScriptableObject

Сообщение lawson 29 ноя 2018, 20:12

Но ведь данные так же можно хранить в префабах. Так в чём же разница тогда?

Пребаф это GameObject с набором компонентов, ScriptableObject это один объект определенного типа содержащий необходимые данные без лишних компонентов.
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Сохранение класса в ScriptableObject

Сообщение Xtir 29 ноя 2018, 20:51

То есть, допустим. У меня в игре например есть 1000 юнитов, каждый из которых имеет переменную Sprite. И если спрайт весит 16.0 KB, то уже занятый объём памяти будет 1000 * 16 KB, так да? Но если создам ScriptableObject и помещу туда этот Sprite и заменю у юнита Sprite на ScriptableObject, то объём занятой памяти будет 16.0 KB? Я всё правильно понял или нет? )))))
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Сохранение класса в ScriptableObject

Сообщение KanycTa 30 ноя 2018, 07:32

Xtir писал(а):То есть, допустим. У меня в игре например есть 1000 юнитов, каждый из которых имеет переменную Sprite. И если спрайт весит 16.0 KB, то уже занятый объём памяти будет 1000 * 16 KB, так да? Но если создам ScriptableObject и помещу туда этот Sprite и заменю у юнита Sprite на ScriptableObject, то объём занятой памяти будет 16.0 KB? Я всё правильно понял или нет? )))))

Да, но только Sprite имеет ссылку на картинку а значит префаб не будет занимать много памяти...


Допустим у тебя есть префаб предмета, в каждом префабе на котором висит скрипт который имеет переменные (string,int и т.д.) и вместо того чтобы не занимать память этими переменными проще оставить ссылку на ScriptableObject который уже содержит эти переменные, при создании такого префаба скрипт будет ссылаться на ScriptableObject и получать данные из него...
Аватара пользователя
KanycTa
UNIт
 
Сообщения: 107
Зарегистрирован: 25 июл 2018, 18:41
Откуда: г. Ульяновск
  • Сайт


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 16