Saya ingin membuat alat yang mirip dengan alat Terrain Unity, yang memiliki beberapa tombol sakelar yang bagus di inspektur:
Bagaimana saya bisa mencapai desain yang mirip dengan ini? Saya tahu cara membuat tombol normal dan komponen UI lainnya di inspektur, tetapi saya tidak dapat menemukan informasi yang cukup untuk membuat tombol beralih.
Sejauh ini saya telah menggunakan matikan normal yang menghasilkan kotak centang:
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue );
if ( tmp != _setValue )
{
_setValue = tmp;
if ( _setValue )
_smoothValue = false;
}
tmp = EditorGUILayout.Toggle( SmoothValueFieldContent, _smoothValue );
if ( tmp != _smoothValue )
{
_smoothValue = tmp;
if ( _smoothValue )
_setValue = false;
}
Mengatur toggle GUIStyle
ke "Button" tidak menghasilkan hasil yang diinginkan. Konten teks atau gambar berada di sebelah kiri tombol alih-alih di dalam.
var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue, "Button" );
Juga tidak ada opsi yang ditemukan di GUISkin tampaknya tidak membantu.
_smoothValue = !GUILayout.Button( SetAmountFieldContent, _smoothValue ? ToggleButtonStyleToggled : ToggleButtonStyleNormal)
, alih-alih memiliki dua boolean? Itu bekerja dengan baik untuk saya dan kode terlihat dekat dengan menggunakan tombol / matikan kesatuan standarToggle mengembalikan status tombol saat ini - baik kondisi yang sama dengan nilai yang diteruskan atau nilai baru seperti yang diubah oleh pengguna. Jadi pola yang lebih baik adalah ...
Anda dapat menggunakan pola swapping yang bergantung pada negara yang sama untuk GUIStyles.
sumber
Ini adalah cara dasar, tetapi sederhana untuk melakukannya:
diambil dari sini
sumber
Gunakan GUILayout.Toolbar . Dokumen menyesatkan, sebenarnya menjalankan tombol bersama:
Selain itu, Anda dapat menggunakan gaya "buttonleft", "buttonmid", "buttonright" untuk menggambar gaya tombol ini secara langsung.
sumber
Kamu bisa melakukan ini:
Sangat penting bagi Anda untuk memulai
buttonStyle
di dalamOnInspectorGUI()
jika tidak Anda akan mendapatkan kesalahan. Juga, jangan lakukanbuttonStyle = GUI.skin.button;
karena Anda akan menyalinskin.button
referensi dan setiap perubahanbuttonStyle
akan mengubah semua gaya tombol.sumber