public Color Evaluate(float time) { if (keys.Count < 2) { return(Color.white); } ColourKey keyLeft = keys[0]; ColourKey keyRight = keys[keys.Count - 1]; for (int i = 0; i < keys.Count; i++) { if (keys[i].Time <= time) { keyLeft = keys[i]; } if (keys[i].Time > time) { keyRight = keys[i]; break; } } if (blendMode == BlendMode.Linear) { float blendTime = Mathf.InverseLerp(keyLeft.Time, keyRight.Time, time); return(Color.Lerp(keyLeft.Color, keyRight.Color, blendTime)); } return(keyRight.Color); }
public ColourKey GetKey(int i) { float r = AnimationCurves[0].GetKeyframe(i).value; float time = AnimationCurves[0].GetKeyframe(i).time; Debug.Log("时间" + time); float g = AnimationCurves[1].GetKeyframe(i).value; float b = AnimationCurves[2].GetKeyframe(i).value; ColourKey temp = new ColourKey(new Color(r, g, b), time); Debug.Log("temp的时间" + temp.Time); return(temp); }
public void AddKey(Color colour, float time) { ColourKey newKey = new ColourKey(colour, time); for (int i = 0; i < keys.Count; i++) { if (newKey.Time < keys[i].Time) { keys.Insert(i, newKey); return; } } keys.Add(newKey); }
public int AddKey(Color colour, float time) { ColourKey key = new ColourKey(colour, time); for (int i = 0; i < keys.Count; i++) { if (key.Time < keys[i].Time) { keys.Insert(i, key); return(i); } } keys.Add(key); return(keys.Count - 1); }
public Color Evaluate(float time) { ColourKey keyLeft = keys[0]; ColourKey keyRight = keys[keys.Count - 1]; // for (int i = 0; i < keys.Count - 1; i++) // { // if (keys[i].Time < time && keys[i + 1].Time >= time) // { // keyLeft = keys[i]; // keyRight = keys[i + 1]; // break; // } // } for (int i = 0; i < keys.Count; i++) { ColourKey key = keys[i]; if (key.Time <= time) { keyLeft = key; } if (key.Time >= time) { keyRight = key; break; } } if (blendMode == BlendMode.Linear) { float blendTime = Mathf.InverseLerp(keyLeft.Time, keyRight.Time, time); return(Color.Lerp(keyLeft.Colour, keyRight.Colour, blendTime)); } return(keyRight.Colour); }
public Color Evaluate(float time) { if (keys.Count == 0) { return(Color.white); } ColourKey keyLeft = keys[0]; ColourKey keyRight = keys[keys.Count - 1]; for (int i = 0; i < keys.Count - 1; i++) { if (keys[i].Time <= time && keys[i + 1].Time >= time) { keyLeft = keys[i]; keyRight = keys[i + 1]; break; } } float blendTime = Mathf.InverseLerp(keyLeft.Time, keyRight.Time, time); return(Color.Lerp(keyLeft.Colour, keyRight.Colour, blendTime)); }
public void UpdateKeyColour(int index, Color col) { keys[index] = new ColourKey(col, keys[index].Time); }
public void UpdateKeyColour(int index, Color colour) { ColourKey key = GetKey(index); keys[index] = new ColourKey(colour, key.Time); }