لعبة الاستكشاف حيث تستكشف المستويات ، لكن الكائنات في العالم غير مكتملة ويجب عليك نصها باستخدام 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.LuaManager ، هناك منطقة تسمى "كشف". هناك ، قم بإنشاء إما 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
وأخيرًا ، من الممكن التحقق مما إذا كان يتم السماح بأمر على هذا الكائن باستخدام 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
}