Как сделать так, чтоб сначала проигрывалась анимация по одному, а иногда немного по другому.
Пример: Есть 2 лампочки, 1-вая мигает постоянно, 2-ая мигает по случайному, может мигнуть, может нет. Главное, чтобы это не была просто "гиф" где она просто иногда мигает через одинаковый промежуток времени.
Анимация - это, обычно, конечный автомат или машина состояний (англ. state machine), в Unity для контроллера анимации она как раз и используется. В вопросе был приведен пример со свечением лампочки, однако свечение лампочки - не есть анимация в общем случае, она либо горит, либо не горит.
Воспользовавшись обычным Random.Range и корутиной с WaitForSeconds:
public class StateMachine : MonoBehaviour {
enum State {
Off,
On
}
State state = State.Off;
[SerializeField]
Vector2 stateChangeTimerBorders;
Material material;
private void Start() {
material = GetComponent<MeshRenderer>().material;
StartCoroutine(StateRoutine());
}
IEnumerator StateRoutine() {
while (true) {
yield return new WaitForSeconds(UnityEngine.Random.Range(stateChangeTimerBorders.x, stateChangeTimerBorders.y));
// Меняем состояние
state++;
if(state > State.On) {
state = State.Off;
}
// Меняем свойства объекта в зависимости от стейта
switch (state) {
case State.Off:
material.SetColor("_Color", Color.white);
break;
case State.On:
material.SetColor("_Color", Color.yellow);
break;
default:
throw new ArgumentException(String.Format("Unknown state {0}", state));
}
}
}
}
Можно получить такой результат:
Сборка персонального компьютера от Artline: умный выбор для современных пользователей