Saya sedang mencari prototipe game di Unity yang akan terdiri dari sprite persegi solid / ubin. Saya pikir saya bisa mewakili berbagai jenis objek dengan warna yang berbeda untuk setiap ubin dalam permainan.
Saya pikir saya dapat mengimpor satu sprite persegi dan menaunginya dengan tepat di Unity sebagai lawan dari kotak yang diimpor dari berbagai warna.
Pengalaman saya dengan menyesuaikan rona dan saturasi dalam Photoshop menunjukkan bahwa putih bukanlah warna yang mudah diubah karena hal-hal yang putih sering tetap putih. Pengujian saya di Unity menunjukkan bahwa saya dapat mengubah "warna" dari sprite menjadi apa pun selain putih dan sprite itu tampaknya diarsir dengan tepat, terlepas dari apa yang saya pikir diberikan pengalaman Photoshop saya.
Karena benda-benda putih tampaknya mengambil naungan warna yang sesuai ketika diubah dalam Unity, usus saya mengatakan kepada saya bahwa ini adalah warna dasar terbaik untuk memulai, yang berarti bahwa saya dapat mengimpor satu sprite kotak putih tunggal dan hanya menyesuaikan warna untuk mewakili objek yang berbeda. dan status objek.
Apakah sprite putih sebenarnya sprite warna terbaik untuk memulai dan mengapa sesuatu seperti ini bekerja di Unity sebagai lawan menyesuaikan rona dan saturasi dalam Photoshop?
Jawaban:
Putih adalah warna dasar terbaik untuk representasi sejati. Juga menjaga skala abu-abu sprite Anda dapat membuat beberapa penyesuaian warna yang mudah untuk tim, dll.
Unity menerapkan
Multiply
mode campuran ke tekstur dan warna sprite.Jenis warna Unity berkisar antara 0 hingga 1 inklusif.
Warna. Putih sama dengan
(1, 1, 1, 1)
.Mengetahui bahwa
1
waktu adalah sesuatu itu sendiri.Jika skala abu-abu
texture
dicampur dengan bidang Sprite RendererColor
, masing-masing piksel itu sendiri. Mengubah bidang ini hanya akan mengalikan setiap nilai skala abu-abu yang seragam dengan masing-masing komponen warna.Anda dapat bermain dengan mode campuran Multiply di editor gambar favorit Anda seperti Photoshop atau GIMP.
sumber
Sprite-Additive.shader - GitHub Gist
Warna-warna kesatuan memiliki 4 nilai float yang tipikal dari banyak format warna RGBA, sesuai dengan nilai warna persentase individu Merah, Hijau, Biru dan saluran transparansi Alpha.
Juga seperti yang disebutkan di atas "Tint" default yang diterapkan oleh Unity adalah shader multiplikatif yang disebut Photoshop efek ini "Multiply" dan proses ini secara harfiah mengalikan nilai warna dalam piksel sprite Anda dengan nilai warna yang dipilih.
Masalah dengan ini adalah, shader matematika warna Multiplicative akan SELALU menghasilkan rona yang sama (jika Anda "mengalikan" dengan putih) atau warna lebih gelap jika Anda mengalikannya dengan hal lain. Saya menemukan situasi di mana saya ingin efek sebaliknya yang tepat dalam situasi tipe pandai besi. Logam yang dipanaskan tidak boleh dikalikan dengan Kuning untuk menghasilkan rona yang lebih gelap:
Sebagai gantinya, saya menulis ulang shader multiplikatif default Unity sebagai aditif. Hasilnya lebih sesuai dengan apa yang saya cari:
Saya akan memberikan inti untuk Sprite-Additive.shader yang ditulis ulang jika ada yang tertarik.
Berikut ini adalah referensi yang bagus tentang terminologi dan mode warna: http://www.northlite.net/ps/blend.htm
sumber