MonoBehaviour.OnValidate()
Описание
Функция только для редактора, которую вызывает Unity при загрузке скрипта или изменении значения в Inspector.
Используйте этот обратный вызов для проверки серийных полей и применения ограничений данных в ответ на Inspector Это основной предполагаемый случай использования для OnValidate. OnValidate также может быть вызвана на различных стадиях обычной работы Редактора, таких как загрузка сцен, создание проигрывателя и вход в режим воспроизведения. Из-за этого, не относитесь к OnValidate как обратный вызов общего назначения для всех изменений свойств или логики редактора.OnValidate может быть вызван часто, когда пользователь взаимодействует с Inspector в редакторе. Его также можно вызвать из потоков, не являющихся потоками Unity's основной поток, такие как поток загрузки. По этим причинам, используйте только OnValidate не используйте его для выполнения других задач, таких как создание объектов или вызов других не потоковых безопасных Unity API.
Вы не можете надежно выполнять Camera операции от OnValidate. Вместо этого добавьте слушателя к EditorApplication.update, и выполнить отображение во время следующего вызова Editor Update.
Дополнительные ресурсы: EditorApplication.update, EditorApplication.delayCall.
using UnityEngine;
public class Health : MonoBehaviour { [SerializeField] private int maxHealth = 100;
[SerializeField] private int currentHealth = 100;
// Called in editor when values are changed in Inspector private void OnValidate() { // Ensure maxHealth is at least 1 if (maxHealth < 1) maxHealth = 1;
// Clamp currentHealth between 0 and maxHealth currentHealth = Mathf.Clamp(currentHealth, 0, maxHealth); } }