SerializeField нужен для того чтобы приватная переменная сериализировалась в редакторе, так как public'и сериализируются по умолчанию
NonSerialized
SerializeField
и HideInInspector вообще разные вещи
ты можешь держать поле SerializeField и HideInInspector например, чтобы это было каким-то буфером