Permainan eksplorasi di mana Anda mengeksplorasi level namun objek di dunia tidak lengkap dan Anda harus membuat skrip mereka menggunakan Lua untuk memecahkan teka -teki dan maju.
Game ini menggunakan perpustakaan berikut:
Catatan : API dapat berubah selama pengembangan!
Di dalam skrip/ Lua.Modules , buat file modul menggunakan templat ini:
using UnityEngine ;
namespace Lua . Modules
{
public class ModuleName : MonoBehaviour
{
}
} Untuk membuat metode contoh, Anda harus memberikan tipe pengembalian (secara opsional dengan parameter) misalnya (pastikan metode ini statis dan publik):
CATATAN : Ada cara untuk bypass memberikan jenis pengembalian jika Anda menggunakan parameter (lihat Lua.Modules.Miscellaneous dan Print namun ini tidak disarankan)
// Example method
public static int ExampleMethod ( string message )
{
UnityEngine . Debug . Log ( message ) ;
return 0 ; // 0 - Success
} Untuk mengekspos metode sehingga dapat digunakan di Lua, ada dua langkah lagi. Di dalam Lua.LuaManager , ada wilayah yang disebut "Expose". Di sana, buat Func atau Action dengan referensi ke fungsi di modul Anda misalnya
// Miscellaneous
script . Globals [ "ExampleMethod" ] = ( Func < string , int > ) ModuleName . ExampleMethod ; Akhirnya, diperlukan untuk menambahkan sakelar ke metode di dalam Lua.LuaControllable jika metode ini memerlukan penggunaan baik Utils.ReturnLuaObject atau LuaControllable.CheckOperationLegality . Untuk melakukan ini, masuk ke dalam Lua.LuaControllable dan kemudian di dalam wilayah "Serialize Fields untuk mengaktifkan fungsi yang diizinkan pada suatu objek". Kemudian buat nilai boolean (pribadi dan serializefield) dengan nama yang tepat dari fungsi yang dibuat (membutuhkan fungsi Anda dinamai secara unik di antara semua metode yang terbuka) misalnya
[ SerializeField ] private bool ExampleMethod = false ; Untuk menggunakan metode LuaControllable.CheckOperationLegality , Anda juga harus menggunakan Utils.ReturnLuaObject sebagai luacontrollable.checkerationlegality memerlukan referensi ke objek game dan luacontroller -nya.
Pertama metode yang dibuat memerlukan parameter string (parameter pertama adalah standar) seperti ini: public static int SetPositionRelative(string controllerName, float x, float y)
Sekunder, referensi ke objek game yang diinginkan dapat diperoleh dengan menggunakan "utils.ReturnluaObject" (mengharuskan semua objek game memiliki nama unik yang diatur di bidang serial Lua.LuaControllable mereka)
Dan akhirnya, dimungkinkan untuk memeriksa apakah perintah diizinkan pada objek itu menggunakan LuaControllable.CheckOperationLegality . Metode ini harus dipanggil dengan value System.Reflection.MethodBase.GetCurrentMethod().Name .
Dan contoh semua ini dari salah satu modul dasar:
// String name used in Lua
public static int SetPositionRelative ( string controllerName , float x , float y )
{
// Get a reference to the controller
var controller = Utils . ReturnLuaObject ( controllerName ) ;
// Check the controller is not null
// System.Reflection.MethodBase.GetCurrentMethod().Name is required to be passed
if ( controller . controller != null )
{
// Check the operation is allowed
switch ( controller . controller . CheckOperationLegality ( System . Reflection . MethodBase . GetCurrentMethod ( ) . Name ) )
{
case false :
return 2 ; // 2 - Illegal operation
case null :
return 3 ; // 3 - Unknown operation
}
// Any code here
return 0 ; // 0 - Command success
}
return 1 ; // 1 - Command failed
}