เกมสำรวจที่คุณสำรวจระดับอย่างไรก็ตามวัตถุในโลกไม่สมบูรณ์และคุณต้องสคริปต์พวกเขาโดยใช้ Lua เพื่อแก้ปริศนาและล่วงหน้า
เกมนี้ใช้ห้องสมุดต่อไปนี้:
หมายเหตุ : API อาจมีการเปลี่ยนแปลงระหว่างการพัฒนา!
ภายในสคริปต์/ Lua.Modules สร้างไฟล์โมดูลโดยใช้เทมเพลตนี้:
using UnityEngine ;
namespace Lua . Modules
{
public class ModuleName : MonoBehaviour
{
}
} ในการสร้างวิธีการตัวอย่างคุณต้องระบุประเภทการส่งคืน (ทางเลือกด้วยพารามิเตอร์) เช่น (ตรวจสอบให้แน่ใจว่าวิธีการคงที่และสาธารณะ):
หมายเหตุ : มีวิธีหลีกเลี่ยงการให้ประเภทการส่งคืนหากคุณใช้พารามิเตอร์ (ดู Lua.Modules.Miscellaneous และ Print อย่างไรก็ตามไม่แนะนำให้ใช้)
// Example method
public static int ExampleMethod ( string message )
{
UnityEngine . Debug . Log ( message ) ;
return 0 ; // 0 - Success
} ในการเปิดเผยวิธีการเพื่อให้สามารถใช้ใน Lua มีอีกสองขั้นตอน ภายใน Lua.LuaManager มีภูมิภาคที่เรียกว่า "Expose" ในนั้นสร้าง Func หรือ Action โดยอ้างอิงกับฟังก์ชั่นในโมดูลของคุณเช่น
// Miscellaneous
script . Globals [ "ExampleMethod" ] = ( Func < string , int > ) ModuleName . ExampleMethod ; ในที่สุดจำเป็นต้องเพิ่มสลับไปยังวิธีการภายใน Lua.LuaControllable หากวิธีการนั้นต้องใช้ Utils.ReturnLuaObject หรือ LuaControllable.CheckOperationLegality ในการทำเช่นนี้ให้เข้าไปใน Lua.LuaControllable แล้วภายในภูมิภาค "ฟิลด์อนุกรมสำหรับการเปิดใช้งานฟังก์ชั่นที่อนุญาตบนวัตถุ" จากนั้นสร้างค่าบูลีน (ส่วนตัวและ serializefield) ด้วยชื่อที่แน่นอนของฟังก์ชั่นที่สร้าง
[ SerializeField ] private bool ExampleMethod = false ; ในการใช้วิธีการ LuaControllable.CheckOperationLegality คุณต้องใช้ Utils.ReturnLuaObject เป็น luacontrollable.checkoperationlegality ต้องมีการอ้างอิงถึงวัตถุเกมนั้นและ luacontroller
ก่อนอื่นวิธีที่สร้างขึ้นจะต้องใช้พารามิเตอร์สตริง (พารามิเตอร์แรกคือมาตรฐาน) เช่นนี้: public static int SetPositionRelative(string controllerName, float x, float y)
รองการอ้างอิงถึงวัตถุเกมที่ต้องการสามารถรับได้โดยใช้ "utils.returnluaObject" (ต้องการให้วัตถุเกมทั้งหมดมีชื่อที่ไม่ซ้ำกันในฟิลด์ Lua.LuaControllable Serialized) ของพวกเขา)
และในที่สุดก็เป็นไปได้ที่จะตรวจสอบว่าได้รับอนุญาตให้ใช้คำสั่งบนวัตถุนั้นโดยใช้ LuaControllable.CheckOperationLegality หรือไม่ วิธีนี้ควรเรียกด้วยค่า System.Reflection.MethodBase.GetCurrentMethod().Name
และตัวอย่างทั้งหมดนี้จากหนึ่งในโมดูลพื้นฐาน:
// 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
}