ランダムで色がほしいときに、色相環から色を取得すると便利だと思ったので
Gradient の Color Key をよしなに設定してランダムに色を取得できるようにしてみました
スクリプト
using UnityEngine; public static class GradientExtension { /// <summary> /// 色相環になるように色をセット /// </summary> public static void Hue(this Gradient self) { var start = 0f; var colors = new[] { Color.red, Color.yellow, Color.green, Color.cyan, Color.blue, Color.magenta, Color.red, }; var colorKeys = new GradientColorKey[colors.Length]; for (var i = 0; i < colors.Length; i++) { colorKeys[i] = new GradientColorKey(colors[i], start); start += 1f / (colors.Length - 2); } self.mode = GradientMode.Blend; self.SetKeys(colorKeys, new GradientAlphaKey[0]); } public static Color GetRandomColor(this Gradient self) { var random = UnityEngine.Random.Range(0, 1f); return self.Evaluate(random); } }
使い方
インスタンスを作成して メソッドを呼び出すだけで、色相環の色にできます
var gradient = new Gradient(); // 色相環をセット gradient.Hue(); // ランダムな色を取得 gradient.GetRandomColor();
色を白っぽくしたり、黒っぽくしたい場合は、更に乱数乗算もしくは加算すればそれっぽくできると思います