В моем примере сцены есть два игровых объекта.Оба должны постоянно вращаться с определенной скоростью на своем локальном пространстве.Это просто монеты , цель которых собирать игрок.Вместо того чтобы писать скрипт вращения внутри каждого метода Update () , я создал скрипт под названием Rotator, который заставляет объект, к которому он прикреплен, вращаться.
Я прикрепил компонент Rotator к каждому объекту, и он работает просто отлично.Теперь у меня есть два игровых объекта с компонентом Rotator , который заставит их вращаться.
Это класс Rotator :
using UnityEngine;
public class Rotator : MonoBehaviour
{
[SerializeField][Range(5, 10)]
private int _rotationSpeed = 5;
[SerializeField]
private float _xAxes = 0;
[SerializeField]
private float _yAxes = 0;
[SerializeField]
private float _zAxes = 0;
void Update()
{
transform.Rotate(new Vector3(_xAxes, _yAxes, _zAxes) * _rotationSpeed * Time.deltaTime);
}
}
Я думаю, что таким образом процесс создания моих игровых объектов намного проще и модульный , чем написание того же кода выше внутри каждого элемента, который должен вращаться.
Мой вопрос: будет ли этоповлиять на производительность?Разве плохая идея разбивать поведение на маленькие части или компоненты, а затем добавлять их к каждому игровому объекту, который их требует?Или лучше, в случае простого поворота, написать эту строку кода непосредственно внутри одного скрипта игрового объекта?
Например, у меня теперь есть другой игровой объект с именем Player , которыйнужно вращаться и на себя.К этому игровому объекту уже прикреплен еще один скрипт под названием PlayerController , который обрабатывает движения игрока с клавиатуры.Я могу написать эту часть ...
transform.Rotate(new Vector3(_xAxes, _yAxes, _zAxes) * _rotationSpeed * Time.deltaTime);
... внутри метода updateC (PlayerController) или, как мне кажется, лучше, присоединить к нему скрипт Rotator.В последнем случае у меня будет игровой объект с двумя компонентами:
Конечно, это всего лишь пример,Я не хочу, чтобы мой игрок продолжал крутиться на самом деле, просто чтобы объяснить мою точку зрения.
Итак, в конце мне нужно понять, является ли это хорошей практикой , даже если небольшая строка кода, подобная ротации, стоит создать компонент ?И я имею в виду поведение, которое требуется более чем одному объекту, конечно, я знаю, что, если это единственный случай, имеет смысл написать его непосредственно в сценарии, который уже присоединен к игровому объекту ввопрос.
Длинный пост, надеюсь, я был достаточно ясен.Спасибо всем!