Meskipun sistem IMGUI Unity terutama dimaksudkan untuk membuat alat pengembang dan antarmuka debugging, Anda masih dapat menyesuaikan dan memberi gaya dalam banyak cara. Dalam sistem IMGUI Unity, Anda dapat menyempurnakan penampilan Kontrol Anda dengan banyak rincian. Penampilan kontrol ditentukan dengan GUIStyles. Secara default, ketika Anda membuat Kontrol tanpa mendefinisikan GUIStyle, GUIStyle default Unity diterapkan. Gaya ini internal dalam Unity dan dapat digunakan dalam game yang diterbitkan untuk prototyping cepat, atau jika Anda memilih untuk tidak menata Kontrol Anda.
Ketika Anda memiliki sejumlah besar GUIStyles yang berbeda untuk bekerja dengan, Anda dapat mendefinisikan mereka semua dalam satu GUISkin. GUISkin tidak lebih dari koleksi GUIStyles.
GUIStyles dirancang untuk meniru Cascading Style Sheets (CSS) untuk browser web. Banyak metodologi CSS yang berbeda telah disesuaikan, termasuk perbedaan sifat state individu untuk styling, dan pemisahan antara konten dan penampilan.
Di mana Kontrol mendefinisikan konten, Gaya mendefinisikan penampilan. Ini memungkinkan Anda untuk membuat kombinasi seperti ToggleSebuah kotak centang yang memungkinkan pengguna untuk mengganti opsi atau menonaktifkan. More info
Lihat di Glossary fungsional yang terlihat seperti Button normal.
Seperti yang tercantum sebelumnya, GUISkins adalah koleksi GUIStyles. Gaya mendefinisikan penampilan Kontrol GUI. Anda tidak harus menggunakan Skin jika Anda ingin menggunakan Style.
Satu GUISkin ditampilkan dalam Inspektur - mengamati bahwa mengandung beberapa GUIStyles
Semua fungsi Kontrol GUI memiliki parameter terakhir opsional: GUIStyle untuk digunakan untuk menampilkan Kontrol. Jika ini dihilangkan, GUIStyle default Unity akan digunakan. Ini bekerja secara internal dengan menerapkan nama jenis kontrol sebagai string, sehingga GUI.Button() menggunakan gaya "button", GUI.Toggle() menggunakan gaya "toggle", dll. Anda dapat menimpa GUIStyle default untuk kontrol dengan menentukannya sebagai parameter terakhir.
/* Override the default Control Style with a different style in the UnityGUI default Styles */
// JavaScript
function OnGUI () {
// Make a label that uses the "box" GUIStyle.
GUI.Label (Rect (0,0,200,100), "Hi - I'm a label looking like a box", "box");
// Make a button that uses the "toggle" GUIStyle
GUI.Button (Rect (10,140,180,20), "This is a button", "toggle");
}
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
void OnGUI () {
// Make a label that uses the "box" GUIStyle.
GUI.Label (new Rect (0,0,200,100), "Hi - I'm a label looking like a box", "box");
// Make a button that uses the "toggle" GUIStyle
GUI.Button (new Rect (10,140,180,20), "This is a button", "toggle");
}
}
Ketika Anda menyatakan variabel GUIStyle publik, semua elemen Style akan muncul di InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary. Anda dapat mengedit semua nilai yang berbeda di sana.
/* Overriding the default Control Style with one you've defined yourself */
// JavaScript
var customButton : GUIStyle;
function OnGUI () {
// Make a button. We pass in the GUIStyle defined above as the style to use
GUI.Button (Rect (10,10,150,20), "I am a Custom Button", customButton);
}
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
public GUIStyle customButton;
void OnGUI () {
// Make a button. We pass in the GUIStyle defined above as the style to use
GUI.Button (new Rect (10,10,150,20), "I am a Custom Button", customButton);
}
}
Ketika Anda telah menyatakan GUIStyle, Anda dapat memodifikasi gaya itu dalam Inspektur. Ada sejumlah besar negara yang dapat Anda tentukan, dan berlaku untuk semua jenis kontrol.
Setiap Negara Kontrol harus ditugaskan warna Background sebelum Text Color yang ditentukan akan diterapkan.
Untuk informasi lebih lanjut tentang GUIStyles individual, silakan baca Halaman Referensi Komponen GUIStyle.
Untuk sistem GUI yang lebih rumit, masuk akal untuk menyimpan koleksi gaya di satu tempat. Ini adalah apa yang dilakukan GUISkin. Meme it GUISkin mengandung beberapa gaya yang berbeda, pada dasarnya menyediakan face-lift lengkap untuk semua Kontrol GUI.
Untuk membuat GUISkin, pilih Assets->Create->GUI Skin dari bilah menu. Ini akan membuat Kulit GUI di Folder Proyek Anda. Pilih untuk melihat semua GUIStyles didefinisikan oleh Skin di Inspector.
Untuk menggunakan kulit yang telah Anda buat, masukkan ke GUI.skin dalam fungsi OnGUI() Anda.
/* Make a property containing a reference to the skin you want to use */
// JavaScript
var mySkin : GUISkin;
function OnGUI () {
// Assign the skin to be the one currently used.
GUI.skin = mySkin;
// Make a button. This will get the default "button" style from the skin assigned to mySkin.
GUI.Button (Rect (10,10,150,20), "Skinned Button");
}
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
public GUISkin mySkin;
void OnGUI () {
// Assign the skin to be the one currently used.
GUI.skin = mySkin;
// Make a button. This will get the default "button" style from the skin assigned to mySkin.
GUI.Button (new Rect (10,10,150,20), "Skinned Button");
}
}
Anda dapat mengganti kulit sebanyak yang Anda sukai sepanjang panggilan OnGUI() tunggal.
/* Example of switching skins in the same OnGUI() call */
// JavaScript
var mySkin : GUISkin;
var toggle = true;
function OnGUI () {
// Assign the skin to be the one currently used.
GUI.skin = mySkin;
// Make a toggle. This will get the "button" style from the skin assigned to mySkin.
toggle = GUI.Toggle (Rect (10,10,150,20), toggle, "Skinned Button", "button");
// Assign the currently skin to be Unity's default.
GUI.skin = null;
// Make a button. This will get the default "button" style from the built-in skin.
GUI.Button (Rect (10,35,150,20), "Built-in Button");
}
// C#
using UnityEngine;
using System.Collections;
public class GUITest : MonoBehaviour {
public GUISkin mySkin;
private bool toggle = true;
void OnGUI () {
// Assign the skin to be the one currently used.
GUI.skin = mySkin;
// Make a toggle. This will get the "button" style from the skin assigned to mySkin.
toggle = GUI.Toggle (new Rect (10,10,150,20), toggle, "Skinned Button", "button");
// Assign the currently skin to be Unity's default.
GUI.skin = null;
// Make a button. This will get the default "button" style from the built-in skin.
GUI.Button (new Rect (10,35,150,20), "Built-in Button");
}
}
Contoh ini akan menunjukkan cara mengubah ukuran font secara dinamis melalui kode.
Membuat proyek baru di Unity. Kemudian buat skrip C# yang disebut Fontsize.cs dan tempel kode berikut:
// C# example
using UnityEngine;
using System.Collections;
public class Fontsize : MonoBehaviour
{
void OnGUI ()
{
//Set the GUIStyle style to be label
GUIStyle style = GUI.skin.GetStyle ("label");
//Set the style font size to increase and decrease over time
style.fontSize = (int)(20.0f + 10.0f * Mathf.Sin (Time.time));
//Create a label and display with the current settings
GUI.Label (new Rect (10, 10, 200, 80), "Hello World!");
}
}
Simpan skrip dan melampirkan ke GameObjectObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary kosong, klik bermain untuk melihat font loop melalui peningkatan dan penurunan ukuran seiring waktu. Anda mungkin memperhatikan bahwa font tidak berubah ukuran halus, ini karena tidak ada jumlah ukuran font yang tak terbatas.
Contoh spesifik ini membutuhkan font default (Arial) dimuat dan ditandai sebagai dinamis. Anda tidak dapat mengubah ukuran font yang tidak ditandai sebagai dinamis.