@dimoooooooooon

Почему выдает ошибку «Named arguments must appear after the positional arguments» в Unity?

У меня есть скрипт:
{
	[SerializeField] Gradient directionalLightGradient;
	[SerializeField] Gradient ambientLightGradient;

	[SerializeField, Range (1, 3600)] float timeDayInSecond = 60;
	[SerializeField, Range(0f, 1f)] float timeProgress;

	[SerializeField] Light dirLight;

	Vector3 defaultAngles;

	void Start ()
	{
		defaultAngles = dirLight.transform.localEulerAngles;
	}

	void Update ()
	{
		if (Application.isPlaying)
		timeProgress += Time.deltaTime / timeDayInSecond;
		
		if (timeProgress > 1f)
			timeProgress = 0f;
			
		dirLight.color = directionalLightGradient.Evaluate (timeProgress);
		RenderSettings.ambientLight = ambientLightGradient.Evaluate (timeProgress);

		dirLight.transform.localEulerAngles = new Vector3(x: 360f * timeProgress - 90, y: defaultAngles.y, defaultAngles.z);
	}
}

это скрипт дня и ночи, кто знает как решить ошибку "Named arguments must appear after the positional arguments"?
скрипт взят с видео
https://www.youtube.com/watch?v=FvLtZYGe7TY&ab_channel=InsaneOne-%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0%D0%B8%D0%B3%D1%80

помогите решить проблему
  • Вопрос задан
  • 28 просмотров
Решения вопроса 1
У тебя есть вот такая строчка:
new Vector3(x: 360f * timeProgress - 90, y: defaultAngles.y, defaultAngles.z);

В ней ты вызваешь конструктор Vector3, причём x и y ты передаёшь как named argument, а z - как positional.
Ошибка говорит о том, что positional должны идти перед named (ну или named после positional)
Чтобы исправить ошибку - тебе нужно либо передавать z как named, либо передавать x и y как positional

PS:
скрипт взят с видео

Если уж копируешь чужой код - разберись что в нём происходит сначала.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы