Metode, sering disebut fungsi, adalah modul kode yang dapat dipanggil dan digunakan secara independen satu sama lain. Setiap metode umumnya mewakili satu tugas atau tujuan, dan seringkali banyak metode dapat bekerja sama untuk mencapai tujuan yang kompleks.
Pertimbangkan dua metode yang telah Anda lihat sejauh ini: Mulai dan Perbarui. Masing - masing mewakili satu tujuan tunggal dan ringkas. Metode Mulai berisi semua kode yang dijalankan untuk objek saat scene pertama kali dimulai. Metode Pembaruan berisi kode yang dijalankan setiap bingkai pembaruan scene (yang berbeda dari bingkai render, atau "bingkai per detik").
Metode Singkatan
Anda telah melihat sejauh ini bahwa setiap kali metode Mulai disebutkan, metode kata telah mengikutinya. Ini bisa menjadi rumit untuk selalu harus menentukan bahwa kata yang digunakan adalah metode. Anda tidak dapat menulis hanya Mulai, karena orang tidak akan tahu apakah yang Anda maksud adalah kata, variabel, atau metode. Cara yang lebih singkat untuk menangani ini adalah dengan menggunakan tanda kurung dengan kata. Jadi, metode Start dapat ditulis ulang hanya sebagai Start(). Jika Anda pernah melihat sesuatu yang ditulis seperti SomeWords(), Anda langsung tahu bahwa penulis sedang berbicara tentang metode bernama SomeWords.
Anatomi Metode
Sebelum bekerja dengan metode, Anda harus melihat bagian-bagian berbeda yang menyusunnya. Berikut ini adalah format umum dari sebuah metode:
<return type> <name> (<parameter list>) {
<Inside the method's block>
}
Nama Metode
Setiap metode harus memiliki nama yang unik (semacam…lihat bagian “Tanda Tangan Metode” di bawah). Meskipun aturan yang mengatur nama diri ditentukan oleh bahasa yang digunakan, pedoman umum yang baik untuk nama metode meliputi yang berikut:
• Buat nama metode deskriptif. Itu harus berupa tindakan atau kata kerja.
• Spasi tidak diperbolehkan. Hindari penggunaan karakter khusus (misalnya, !, @, *, %,
$) dalam nama metode.
• Bahasa yang berbeda memungkinkan karakter yang berbeda. Dengan tidak menggunakan apa pun, Anda menghindari risiko masalah.
Nama metode penting karena memungkinkan Anda mengidentifikasi dan menggunakannya.
Tipe Pengembalian
Setiap metode memiliki kemampuan untuk mengembalikan variabel kembali ke kode apa pun yang disebut. Tipe dari variabel ini disebut tipe kembalian. Jika suatu metode mengembalikan bilangan bulat (bilangan bulat), tipe pengembaliannya adalah int. Demikian juga, jika suatu metode mengembalikan nilai true atau false, tipe pengembaliannya adalah bool. Jika suatu metode tidak mengembalikan nilai apa pun, metode itu masih memiliki tipe pengembalian. Dalam hal itu, tipe pengembalian adalah batal (tidak berarti apa-apa). Metode apa pun yang mengembalikan nilai akan melakukannya dengan kata kunci return.
Daftar Parameter
Sama seperti metode dapat meneruskan variabel kembali ke kode apa pun yang disebut, kode panggilan dapat meneruskan variabel. Variabel ini disebut parameter. Variabel yang dikirim ke metode diidentifikasi di bagian daftar parameter metode. Sebagai contoh, sebuah metode bernama Attack yang mengambil bilangan bulat yang disebut musuh ID akan terlihat seperti ini:
void Attack(int enemyID) { }
Seperti yang Anda lihat, saat menentukan parameter, Anda harus memberikan tipe dan nama variabel. Beberapa parameter dipisahkan dengan koma.
Tanda Tangan Metode
Kombinasi dari tipe pengembalian metode, nama, dan daftar parameter sering disebut sebagai tanda tangan metode. Sebelumnya pada jam ini saya menyebutkan bahwa suatu metode harus memiliki nama yang unik, tetapi itu tidak sepenuhnya benar. Yang benar adalah bahwa suatu metode harus memiliki tanda tangan yang unik. Karena itu, pertimbangkan dua metode ini:
void MyMethod() {}
void MyMethod(int number) {}
Meskipun kedua metode ini memiliki nama yang sama, mereka memiliki daftar parameter yang berbeda dan karenanya berbeda. Praktek memiliki metode yang berbeda dengan nama yang sama juga bisa disebut kelebihan metode.
Blok Metode
Blok metode adalah tempat kode metode berada. Setiap kali metode digunakan, kode di dalam blok metode dieksekusi.
Mengidentifikasi Bagian Metode
Luangkan waktu sejenak untuk meninjau bagian-bagian berbeda dari suatu metode dan kemudian pertimbangkan metode berikut: Klik di sini untuk melihat gambar kode
int TakeDamage(int damageAmount) {
int health = 100;
return health - damageAmount;
}
Dapatkah Anda mengidentifikasi potongan-potongan berikut?
1. Apa nama metodenya?
2. Jenis variabel apa yang dikembalikan oleh metode?
3. Apa parameter metodenya? Ada berapa banyak?
4. Kode apa yang ada di blok metode?
Metode sebagai Pabrik
Konsep metode dapat membingungkan bagi seseorang yang baru mengenal pemrograman. Seringkali, kesalahan dibuat mengenai parameter metode dan metode apa yang dikembalikan. Cara yang baik untuk menjaganya tetap lurus adalah dengan memikirkan metode sebagai pabrik. Pabrik menerima bahan mentah yang mereka gunakan untuk membuat produk. Metode bekerja dengan cara yang sama. Parameternya adalah bahan yang Anda masukkan ke "pabrik", dan pengembaliannya adalah produk akhir dari pabrik itu.
Pikirkan saja metode yang tidak mengambil parameter sebagai pabrik yang tidak membutuhkan barang mentah. Demikian juga, pikirkan metode yang tidak mengembalikan apa pun sebagai pabrik yang tidak menghasilkan produk akhir. Dengan membayangkan metode sebagai pabrik kecil, Anda dapat bekerja untuk menjaga aliran logika tetap lurus di kepala Anda.
Metode Penulisan
Ketika Anda memahami komponen suatu metode, menulisnya menjadi mudah.
Sebelum Anda mulai menulis metode sendiri, luangkan waktu sejenak untuk menjawab tiga pertanyaan utama:
• Tugas spesifik apa yang akan dicapai metode tersebut?
• Apakah metode memerlukan data luar untuk mencapai tugasnya?
• Apakah metode ini perlu mengembalikan data apa pun?
Menjawab pertanyaan-pertanyaan ini akan membantu Anda menentukan nama metode, parameter, dan data yang dikembalikan. Perhatikan contoh ini: Seorang player dipukul dengan bola api. Anda perlu menulis metode untuk mensimulasikan ini dengan menghapus 5 poin kesehatan. Anda tahu apa tugas spesifik dari metode ini. Anda juga tahu bahwa tugas tidak memerlukan data apa pun (karena Anda tahu ini membutuhkan 5 poin) dan mungkin harus mengembalikan nilai kesehatan yang baru. Anda bisa menulis metode seperti ini:
int TakeDamageFromFireball() { int playerHealth = 100;
return playerHealth - 5;
}
Seperti yang Anda lihat dalam metode ini, kesehatan player adalah 100, dan 5 dikurangi darinya. Hasilnya (yaitu 95) dilewatkan kembali. Jelas, ini bisa ditingkatkan. Sebagai permulaan, bagaimana jika Anda ingin bola api menghasilkan damage lebih dari 5 poin? Anda kemudian perlu tahu persis berapa banyak kerusakan yang seharusnya dilakukan bola api pada waktu tertentu. Anda akan membutuhkan variabel, atau dalam hal ini parameter. Metode baru Anda dapat ditulis sebagai berikut:
int TakeDamageFromFireball(int damage) {
int playerHealth = 100;
return playerHealth - damage;
}
Sekarang Anda dapat melihat bahwa kerusakan dibaca dari metode dan diterapkan pada kesehatan. Tempat lain di mana ini dapat ditingkatkan adalah dengan kesehatan itu sendiri.
Saat ini, player tidak akan pernah kalah karena kesehatan mereka akan selalu disegarkan kembali ke 100 sebelum kerusakan dikurangi. Akan lebih baik untuk menyimpan kesehatan
player di tempat lain sehingga nilainya tetap. Anda kemudian bisa membacanya dan menghapus kerusakan dengan tepat. Metode Anda kemudian dapat terlihat seperti ini:
int TakeDamageFromFireball(int damage, int playerHealth) {
return playerHealth - damage;
}
Dengan memeriksa kebutuhan Anda, Anda dapat membangun metode yang lebih baik dan lebih kuat untuk game Anda.
Penyederhanaan
Dalam contoh sebelumnya, metode yang dihasilkan hanya melakukan pengurangan dasar. Ini terlalu disederhanakan demi instruksi. Dalam lingkungan yang lebih realistis, ada banyak cara untuk menangani tugas ini. Kesehatan player dapat disimpan dalam variabel milik skrip. Dalam hal ini, itu tidak perlu dibaca. Kemungkinan lain adalah menggunakan algoritma kompleks dalam metode TakeDamageFromFireball untuk mengurangi kerusakan yang masuk dengan beberapa nilai armor, kemampuan menghindar player, atau perisai magis. Jika contoh di sini tampak konyol, ingatlah bahwa itu dimaksudkan untuk menunjukkan berbagai elemen topik.
Menggunakan Metode
Setelah metode ditulis, yang tersisa hanyalah menggunakannya. Menggunakan metode sering disebut sebagai memanggil atau memanggil metode. Untuk memanggil metode, Anda hanya perlu menulis nama metode diikuti dengan tanda kurung dan parameter apa pun. Jadi, jika Anda mencoba menggunakan metode bernama SomeMethod, Anda akan menulis yang berikut:
SomeMethod();
Jika SomeMethod() memerlukan parameter integer, Anda menyebutnya seperti ini:
// Method call with a value of 5 SomeMethod(5);
// Method call passing in a variable int x = 5;
SomeMethod(x);
// do not write "int x" here.
Perhatikan bahwa saat Anda memanggil metode, Anda tidak perlu menyediakan tipe variabel dengan variabel yang Anda lewati. Jika SomeMethod() mengembalikan nilai, Anda ingin menangkapnya dalam variabel. Kodenya bisa terlihat seperti ini (dengan asumsi tipe pengembalian Boolean; pada kenyataannya, bisa apa saja):
bool result = SomeMethod();
Menggunakan sintaks dasar ini adalah semua yang ada untuk memanggil metode.
Memanggil Metode
Mari kita bekerja lebih jauh dengan metode TakeDamageFromFireball yang dijelaskan di bagian sebelumnya. Latihan ini menunjukkan bagaimana memanggil berbagai bentuk metode. (Anda dapat menemukan solusi untuk latihan ini sebagai FireBallScript di aset buku untuk Jam 8.) Ikuti langkah-langkah berikut:
1. Buat proyek atau scene baru. Buat skrip C# bernama FireBallScript dan masukkan tiga metode TakeDamageFromFireball yang dijelaskan sebelumnya. Ini harus masuk ke dalam definisi kelas, pada tingkat indentasi yang sama dengan metode Start() dan Update(), tetapi di luar kedua metode tersebut.
2. Pada metode Start, panggil metode TakeDamageFromFireball() pertama dengan mengetikkan perintah berikut:
int x = TakeDamageFromFireball();
print("Player health: " + x);
3. Lampirkan skrip ke Kamera Utama dan jalankan scenenya. Perhatikan output di Console. Sekarang panggil metode TakeDamageFromFireball() kedua di Start() dengan mengetik berikut ini (letakkan di bawah bit pertama kode yang Anda ketik; tidak perlu menghapusnya):
int y = TakeDamageFromFireball(25);
print("Player health: " + y);
4. Sekali lagi, jalankan scene dan catat output di Console. Terakhir, panggil metode TakeDamageFromFireball() terakhir di Start() dengan mengetik berikut ini:
int z = TakeDamageFromFireball(30, 50);
print("Player health: " + z);
5. Jalankan scene dan catat hasil akhirnya. Perhatikan bagaimana ketiga metode berperilaku sedikit berbeda satu sama lain. Perhatikan juga bahwa Anda memanggil masing-masing secara khusus, dan versi yang benar dari metode TakeDamageFromFireball() digunakan berdasarkan parameter yang Anda masukkan.
Bantuan Menemukan Kesalahan
Jika Anda mendapatkan kesalahan saat mencoba menjalankan skrip, perhatikan nomor baris dan nomor karakter yang dilaporkan di Konsol, di akhir pesan kesalahan.
Selanjutnya, Anda dapat "membangun" kode Anda di dalam Visual Studio dengan menggunakan Ctrl+Shift+B (Command+Shift+B pada Mac). Saat Anda melakukan ini, Visual Studio memeriksa kode Anda dan menunjukkan kesalahan apa pun dalam konteks, menunjukkan dengan tepat di mana garis bermasalah itu. Cobalah.