Saya merasa agak sulit untuk menemukan solusi untuk ini dalam dokumen Unity.
Color.Lerp(Color a, Color b, float t)
adalah fungsi yang secara bertahap mengubah warna berdasarkan langkah t, memberikannya nilai akhir Warna b.
Bagaimana cara Lerp antara beberapa warna satu demi satu?
Salah satu pendekatan yang dapat diambil dengan berbagai transisi warna adalah dengan memanfaatkan Gradient .
Dengan memaparkan variabel publik dari jenis ini, pengembang menggunakan Inspektur untuk meluncurkan Gradient Editor untuk merancang gradien yang mengandung sejumlah warna. Editor ini memungkinkan Anda untuk menggunakan color pickers unity, penempatan fine tune warna / alpha dan menyimpan / memuat gradien.
Setelah dirancang
Gradient.Evaluate()
metode akan menerima pelampung di kisaran 0-1 untuk mengembalikan warna yang sesuai.Sayangnya API untuk pemrograman Gradient secara pemrograman tidak elegan .
sumber
Jadi ini adalah kode yang akhirnya saya gunakan untuk lerp antara tiga warna milik saya, saya harap saya akan berguna bagi siapa saja yang memutuskan untuk mencari ini.
sumber
Saya merasa mungkin ada solusi yang lebih baik. Satu-satunya alasan saya akan melihat lerp dari warna ke warna adalah jika Anda ingin terus mengubah rona ... http://en.wikipedia.org/wiki/Hue
Berikut cara mengonversi HSV ke RGB: http://en.wikipedia.org/wiki/HSL_and_HSV#From_HSV
Dengan ini, Anda dapat menggunakan warna HSV, cukup ganti rona, lalu konversikan ke RGB. Selain itu, dengan Color.Lerp, Anda memiliki masalah ketidakkonsistenan. Jika Anda lerp dari oranye ke kuning, lalu ke hijau, Anda akan menemukan bahwa warna mulai menjadi sangat cepat kuning kemudian mulai melambat ketika mendekati kuning, kemudian mempercepat lagi setelah melewati kuning dan pergi ke hijau. Jadi itu akan memperlambat perubahan warna di setiap titik yang Anda lerping. Saya pikir mengubah rona akan jauh lebih efektif - dan dalam jangka panjang, akan memberikan efek yang lebih baik. :)
sumber
Bagaimana kalau Anda menulis versi Anda sendiri, yang memanfaatkan
Color.Lerp()
?Versi yang sangat sederhana yang mengambil 3 warna, dan menempatkan yang kedua tepat di tengah bisa terlihat seperti ini:
sumber
Karena Anda tidak mengatakan apa yang ingin Anda ubah warna, saya akan memberikan contoh samar dengan warna yang dibuat pada metode.
Intinya adalah memiliki koleksi warna, dan durasi total (seperti pada contoh saya akan berikan) atau durasi antara masing-masing (terserah Anda).
Saya pribadi tidak menginterpolasi hal-hal di Pembaruan yang saya tahu saya tidak akan terus-menerus melakukan interpolasi (Kamera menjadi pengecualian), jadi saya menggunakan coroutine untuk mengatasinya.
Pada contoh ini saya membagi durasi yang diberikan pada inspektur dengan jumlah warna, dan kemudian I Lerp warna iterator yang sebenarnya ke warna iterator berikutnya, dan durasinya akan dari durasi yang sebelumnya disambung. Berikut ini contohnya:
Semoga ini bisa membantu.
sumber