Изменения ScriptableObject в Awake() не отображаются в Инспекторе до перезапуска Unity.C#

Место общения программистов C#
Anonymous
Изменения ScriptableObject в Awake() не отображаются в Инспекторе до перезапуска Unity.

Сообщение Anonymous »

Я создал класс ScriptableObject MySO, который модифицируется в функции Awake(). Я также добавил EditorUtility.SetDirty(this); в качестве последней команды. Класс имеет поле List myList. Во время функции Awake я добавляю в этот список пару экземпляров.
При создании нового экземпляра MySO через AssetMenu сначала кажется, что правильно отобразить список в Инспекторе, но он станет пустым, как только я щелкну где-нибудь или нажму Enter. Изменения проявляются только после перезапуска Unity.
Все необходимое является либо общедоступным, либо [сериализуемым].

Код: Выделить всё

[CreateAssetMenu(fileName = "NewMySO", menuName = "MySO")]
[System.Serializable]
public class MySO : ScriptableObject
{
public List someOtherClassList;
private void Awake()
{
//-------------------------
//add instances to someOtherClassList
//--------------
EditorUtility.SetDirty(this);
//AssetDatabase.SaveAssets(); //Didn't help
//AssetDatabase.Refresh(); // Didn't help
}

}
Я пробовал добавить AssetDatabase.SaveAssets() и AssetDatabase.Refresh() после SetDirty(this). Ни один из них не работает, а первый приводит к ошибкам из-за ограничений при импорте ресурсов..
Будем благодарны за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/787 ... fter-unity

Вернуться в «C#»