Erkundungsspiel, bei dem Sie Level erforschen, jedoch sind Objekte in der Welt unvollständig und Sie müssen sie mit Lua skript, um Rätsel zu lösen und voranzukommen.
Dieses Spiel verwendet die folgenden Bibliotheken:
HINWEIS : Die API kann sich während der Entwicklung ändern!
Erstellen Sie in den Skripten/ Lua.Modules eine Moduldatei mit dieser Vorlage:
using UnityEngine ;
namespace Lua . Modules
{
public class ModuleName : MonoBehaviour
{
}
} Um eine Beispielmethode zu erstellen, müssen Sie einen Rückgabetyp (optional mit Parametern) angeben (stellen Sie sicher, dass die Methode statisch und öffentlich ist):
Hinweis : Wenn Sie einen Parameter verwenden, gibt es eine Möglichkeit, einen Rückgabetyp zu umgehen (siehe Lua.Modules.Miscellaneous und Print , dies wird jedoch nicht empfohlen).
// Example method
public static int ExampleMethod ( string message )
{
UnityEngine . Debug . Log ( message ) ;
return 0 ; // 0 - Success
} Um die Methode aufzudecken, damit sie in Lua verwendet werden kann, gibt es zwei weitere Schritte. In Lua.LuaManager gibt es eine Region namens "Expose". Erstellen Sie dort entweder einen Func oder Action unter Bezugnahme auf die Funktionen in Ihrem Modul EG
// Miscellaneous
script . Globals [ "ExampleMethod" ] = ( Func < string , int > ) ModuleName . ExampleMethod ; Schließlich ist erforderlich, um der Methode innerhalb von Lua.LuaControllable einen Umschalter hinzuzufügen, wenn die Methode entweder Utils.ReturnLuaObject oder LuaControllable.CheckOperationLegality CheckoperationLegality erforderlich ist. Gehen Sie dazu in Lua.LuaControllable und dann in den Region "Serialisieren Sie Felder zum Aktivieren der zulässigen Funktionen für ein Objekt". Erstellen Sie dann einen booleschen Wert (privat und serializefield) mit dem genauen Namen der erstellten Funktion (die Ihre Funktion bei allen exponierten Methoden einzigartig benannt werden muss) z. B.
[ SerializeField ] private bool ExampleMethod = false ; Um die Methode zu verwenden, LuaControllable.CheckOperationLegality verwenden, müssen Sie auch Utils.ReturnLuaObject als luacontrollable verwenden.
Zunächst erfordert die erstellte Methode einen String -Parameter (erster Parameter ist der Standard) wie folgt: public static int SetPositionRelative(string controllerName, float x, float y)
Sekundär, ein Verweis auf das gewünschte Spielobjekt kann mit "utils.returnluaObject" erhalten werden (wodurch alle Spielobjekte einen eindeutigen Namen in ihrem Lua.LuaControllable serialisierten Feld festgelegt haben)
Und schließlich ist es möglich zu überprüfen, ob ein Befehl mit LuaControllable.CheckOperationLegality auf diesem Objekt zulässig ist. Diese Methode sollte mit dem Wertsystem aufgerufen werden System.Reflection.MethodBase.GetCurrentMethod().Name
Und ein Beispiel von all dem aus einem der grundlegenden Module:
// 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
}