انتقل إلى المحتوى الرئيسي

SScript

Functions​

TypeName​

string TypeName (DynValue dv)

Return the type name of the value.

ParameterTypeDescription
dvDynValue
typeName = Space.TypeName("123")

TrackingAllowed​

bool TrackingAllowed (string key)

Returns true on white-label grids when the user has opted into tracking for the given key. Always returns false on the main grid.

ParameterTypeDescription
keystringA unique identifier used to store and look up the user's tracking consent.
isTrackingAllowed = Space.TrackingAllowed('3423423423423')

TrackingRequest​

void TrackingRequest (string key, string privacynotice, Closure callback, bool force=false)

Displays a consent prompt (EULA-style) asking the user to allow tracking for a given key. On white-label grids, stores the user's choice and invokes the callback with a boolean indicating consent. On the main grid, this does nothing.

ParameterTypeDescription
keystringA unique identifier used to store and look up the user's tracking consent.
privacynoticestringThe privacy notice text to display in the consent dialog.
callbackClosureA function invoked with one boolean parameter: true if allowed, false otherwise.
forceboolIf true, show the prompt even if a stored decision exists. Defaults to false.
-- Request consent (white-label only). The callback receives a boolean 'allowed'.
Space.TrackingRequest('24234234234234', 'A notice message', function(allowed)
if allowed then
Space.Log("Tracking allowed")
else
Space.Log("Tracking denied")
end
end)
-- or force re-prompt even if a decision was saved previously:
Space.TrackingRequest('24234234234234', 'A notice message', function(allowed) end, true)

GetResource​

SResource GetResource (string name)

Returns a reference to a SResource using it's Resource name.

ParameterTypeDescription
namestringName of the Resource as set in the Scripting Runtime Component (Resources section)
aResource = Space.GetResource("ResourceName")

LogEvent​

void LogEvent (string eventName, float value, SVector position)

Logs an analytics event to the server on white-label grids.

ParameterTypeDescription
eventNamestringThe name of the analytics event.
valuefloatA numeric value associated with the event.
positionSVectorA world position to associate with the event.
Space.LogEvent('event name', 2.0, Vector.New(0,0,0) )

Log​

void Log (DynValue text, bool logToFile=false)
void Log (string text, bool logToFile=false)

Log a message to console.

ParameterTypeDescription
Space.Log(Color.Blue)
--or
Space.Log("Log")
--or
Space.Log("Log",true)

Properties​

Inventory​

SInventory Inventory get

Allows access to the users inventory

inventory = Space.Inventory

Persistence​

SPersistence Persistence get

Stores information between user sessions, and for other users

``` persistence = Space.Persistence ```

Scene​

SScene Scene get

Allows access to the current scene graph (objects and avatars in the scene, and other information)

scene = Space.Scene

Grid​

SGrid Grid get

Property Description

grid = Space.Grid

Host​

SHost Host get

Access information about the current scripting runtime host

host = Space.Host

Physics​

SPhysics Physics get

Call physics-related commands, and variables, such as raycasting

physics = Space.Physics

Math​

SMath Math get

Math related functions (Sin, Cos, Tan, etc)

Space.Math.Ceil(4.0)

String​

SString String get

Miscellaneous additional string functions (e.g. MD5Sum)

Space.String.GetBytes("some data")

Input​

SInput Input get

Input device related functions (mouse position, keyboard state)

Space.Input.Vibrate(1,1,false)

Camera​

SCameraManager Camera get

Take and control the users camera

obj = Space.Host.ExecutingObject
Space.Camera.LockCamera (obj)

WebServices​

SWebService WebServices get

Call remote web services to designated hosts (will not work with arbitrary domains, see page for details)

Space.WebServices.GetImage("example.com/mrlee.jpg")

Network​

SNetwork Network get

Send data to other clients through the region server

Space.Network.SubscribeToNetwork("helloworld", gotAMessageFunction)

PostFX​

SPostFX PostFX get

Property Description

Space.PostFX

AudioAnalyser​

SAudioAnalyser AudioAnalyser get

Property Description

Space.AudioAnalyser

Tween​

STween Tween get

Property Description

Space.Tween

UI​

SUI UI get

Property Description

ui = Space.UI

Dialogues​

SDialogues Dialogues get

Property Description

dialogues = Space.Dialogues

Shared​

SShared Shared get

Property Description

shared = Space.Shared

Quests​

SQuests Quests get

Property Description

quests = Space.Quests

Economy​

SEconomy Economy get

Property Description

economy = Space.Economy

Groups​

SGroup Groups get

Property Description

groups = Space.Groups

Activity​

SActivity Activity get

Property Description

``` activity = Space.Activity ```

RenderSettings​

SRenderSettings RenderSettings get

Property Description

renderSettings = Space.RenderSettings

Profile​

SProfile Profile get

Property Description

profile = Space.Profile

Photos​

SPhotos Photos get

Property Description

photos = Space.Photos

Videos​

SVideos Videos get

Property Description

videos = Space.Videos

MusicDirectory​

SMusicDirectory MusicDirectory get

Property Description

musicDirectory = Space.MusicDirectory

Journey​

SJourney Journey get

Property Description

journey = Space.Journey

GameTester​

SGameTester GameTester get

Property Description

gameTester = Space.GameTester

RuntimeType​

string RuntimeType get

Return current RuntimeType name.

runtimeType = Space.RuntimeType

Platform​

string Platform get

Return current platform name.

platform = Space.Platform

SessionID​

string SessionID get

Return current SessionID.

sessionID = Space.SessionID

InEditor​

bool InEditor get

Return true if in unity editor.

isInEditor = Space.InEditor
--the below script checks if we are in Unity editor or in SS
--this way we can provide an alternative
--(Example: if we're using a function that doesn't work in Unity editor)

thisGameObject = Space.Host.ExecutingObject


if Space.InEditor then
avatarUsername = "Player Name"
else
avatarUsername = Space.Scene.GetAvatar(thisGameObject.Owner).Username --example: this doesn't work in Editor
end

Space.Log(avatarUsername)

Version​

int Version get

Returns the numeric build version of the viewer (for programmatic comparisons). In the Unity Editor this returns int.MaxValue; if unknown at runtime it returns -1.

viewerVersion = Space.Version

FullVersionString​

string FullVersionString get

Returns the full build version display string tied to release notes (e.g., "2025.6f210"). Best for user-facing display and logging.

viewerVersionString = Space.FullVersionString

Resources​

SResource[] Resources get

Property Description

tableOfResources = Space.Resources
--the below script will search through the Scripting Runtime's resources
--and return the first instance of an Animation Clip
--[You need to add a few resources to the scripting runtime and make one of them an animation]


resources = Space.Resources

for i = 1, #resources do
if resources[i].Type == "AnimationClip" then
Space.Log("Resource #".. i .. " is an Animation Clip. The resource name is: " .. resources[i].Name)
break
end
end

Time​

float Time get

Returns time at the beginning of this frame.

floatTime = Space.Time
--this script will update a UIText object with the current local time without using a coroutine
--(example: clock )
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

rateUpdate = 1.0
nextUpdate = 0.0
text = Space.Host.GetReference("Text").UIText


OnUpdate = function()
if Space.Time > nextUpdate then
nextUpdate = Space.Time + rateUpdate
text.Text = Space.LocalTime
end
}

Space.Host.ExecutingObject.OnUpdate(OnUpdate)

ServerTime​

string ServerTime get

Returns current server time.

serverTime = Space.ServerTime
--this script will update a UIText object with the current server time (UTC)
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
while true do
text.Text = Space.ServerTime
coroutine.yield(1)
end
end

Space.Host.StartCoroutine(co)

LocalTime​

string LocalTime get

Returns current local time.

localTime = Space.LocalTime
--this script will update a UIText object with the current local time
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
while true do
text.Text = Space.LocalTime
coroutine.yield(1)
end
end

Space.Host.StartCoroutine(co)

LoginTime​

float LoginTime get

Returns how long player has been logged in (in seconds).

loginTime = Space.LoginTime
--this script will update a UIText object with how long the user has been logged in (in seconds)
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
while true do
text.Text = Space.LoginTime
coroutine.yield(1)
end
end

Space.Host.StartCoroutine(co)

ServerTimeUnix​

int ServerTimeUnix get

Returns the server time unix timestamp.

serverTimeUnix = Space.ServerTimeUnix
--this script will update a UIText object with the current server time unix timestamp
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
while true do
text.Text = Space.ServerTimeUnix
coroutine.yield(1)
end
end

Space.Host.StartCoroutine(co)

LocalTimeUnix​

int LocalTimeUnix get

Returns the local time unix timestamp.

localTimeUnix = Space.LocalTimeUnix
--this script will update a UIText object with the current local time unix timestamp
--(example: clock)
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

co = function()
while true do
text.Text = Space.LocalTimeUnix
coroutine.yield(1)
end
end

Space.Host.StartCoroutine(co)

DeltaTime​

float DeltaTime get

The completion time in seconds since the last frame.

deltaTime = Space.DeltaTime
--the below script rotates an object around Y axis but uses DeltaTime
--to make sure it's not dependant on client's Framerate (FPS)
--this way the object rotates per second not per frame
--(Example: Important movement in OnUpdate)

thisGameObject = Space.Host.ExecutingObject



OnUpdate = function()
currentY = thisGameObject.WorldRotation.EulerAngles.Y
newRotation = Quaternion.Euler(0, currentY + 1 * Space.DeltaTime, 0) --We multiplied 1 by Space.DeltaTime
thisGameObject.WorldRotation = newRotation
end

thisGameObject.OnUpdate(OnUpdate)

PreviewServer​

bool PreviewServer get

Return true if in preview server.

isInPreview = Space.PreviewServer
--this script will update a UIText object with "preview" or "live" depending
--whether we are on preview server or live server
--[UIText object needs to be added to the references section in the scripting runtime with name "Text"]

text = Space.Host.GetReference("Text").UIText

OnUpdate = function()
if Space.PreviewServer then
text.Text = "Preview"
else
text.Text = "Live"
end
end

Space.Host.ExecutingObject.OnUpdate(OnUpdate)

ComponentName​

string ComponentName get

The name of this component.

componentName = Space.ComponentName