Привет всем, я немного запутался со статикой. Знаете ли вы, можно ли сделать ползунок (или поле), который обновляет статическую переменную. Идея заключается в том, что если я применяю сценарий к нескольким GameObjects и изменяю значение ползунка на один из них, все ползунки в других сценариях устанавливаются на одно и то же значение. Я пытаюсь настроить это, чтобы упростить настройку.
Хорошего дня
2 ответа
Вы можете сделать это, изменив значение напрямую, но изменения не будут сохраняться между запусками игры. Это потому, что Unity не поддерживает сериализацию статических переменных. Таким образом, вы можете использовать его только для запуска некоторых быстрых тестов, но при следующем запуске статические переменные будут иметь значения по умолчанию.
Попробуйте что-то подобное в коде инспектора:
staticVal = EditorGUILayout.Slider("some label", staticVal, minVal, maxVal);
Возможно, мог бы быть другой способ помочь с тем, чего вы хотите достичь. Попробуйте расширить свой вопрос.
Даже если вам это удастся (см., например, другой ответ)... значение static
будет не сериализоваться -> не сохранять! Так что на самом деле это ничем вам не поможет во время редактирования.
Вместо этого вам следует рассмотреть возможность использования ScripableObject
, например,
// See https://docs.unity3d.com/ScriptReference/CreateAssetMenuAttribute.html
[CreateAssetMenu]
public class FloatValue : ScriptableObject
{
[Range(0, 1)] public float Value;
}
Вы должны создать экземпляр актива через ProjectView (Assets)
→ щелчок правой кнопкой мыши → Create
→ FloatValue
.
Затем вы можете ссылаться на это значение везде, где это необходимо, например.
[SerializeField] private FloatValue myFloat;
И просто перетащите свой актив в этот слот.
Особый совет: вы можете сделать свой ресурс ссылкой по умолчанию для любого нового созданного экземпляра вашего компонента, напрямую выбрав соответствующий файл скрипта в Unity и в Инспекторе перетащив ресурс в соответствующий слот. Это сделает его значением по умолчанию для любого нового созданного экземпляра этого компонента в редакторе.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.