wiki.sine.space | sinespace

Scripting/SHost

From wiki.sine.space
Revision as of 07:49, 15 December 2020 by Edisonwu (Talk | contribs)

Jump to: navigation, search

The SHost class represents the scripting runtime.

Members

InvokeEvent

void InvokeEvent (string name);

Invokes a UnityEvent attached to the Scripting Runtime component this script is executing in.

function InvokeExample()
    Space.Log("Invoke Event");
end
--Attach the upon function to Scripting Runtime/Unity Interfaces/Events,Named "InvokeExample.

Space.Host.InvokeEvent("InvokeExample");
--print "Invoke Event" to the console.


Stop

void Stop ();

Pauses the current script until it is manually restarted, at the end of the current function/method; consider using return as well.

local trans=Space.Host.ExecutingObject;

trans.SubscribeToEvents();

function Running()
    Space.Log("Running")
end

trans.OnUpdate(Running)

Space.Host.InvokeDelayed(function()
    Space.Log("Stop")
    Space.Host.Stop()
end,5)

--After print the "Stop","Running" won't display anymore.


ExecutingObject

SGameObject ExecutingObject { get; }

Returns the SGameObject this script is attached to.

local obj=Space.Host.ExecutingObject;

Space.Log(obj.Name);

--print object name to the console.


Language

string Language { get; }

Returns the English name for the users language, e.g. 'English', 'French', 'Chinese'

Space.Log(Space.Host.Language);
--print current system language in English.


StartCoroutine

void StartCoroutine (DynValue func);

Executes the specified function as a coroutine.

local function myCoroutine()
    -- The yield statement is a special kind of return, that ensures that the function will continue from the line once the coroutine resumes.
    -- Placing a float value inside of the yield will result in a delayed execution.
    -- Example: coroutine.yield(0.5) will wait 0.5 seconds before continuing the execution of the coroutine.

    -- This will print the current players active time.
    Space.Log(Space.Time);

    -- Execution of this coroutine will be halted for 10 seconds.
    coroutine.yield(10);

    -- This will print the current players active time, which will be 10 seconds greater then the previous as a result of the yield
    Space.Log(Space.Time);
end

Space.Host.StartCoroutine(myCoroutine);


InvokeDelayed

void InvokeDelayed (Closure c, float delay)

Invoke the closure after the delayed time.

Space.Host.InvokeDelayed(function()
    Space.Log("InvokeDelayed")
end,5)
--print "InvokeDelayed" after 5 seconds.