主站
道具百科
触发器百科
脚本API百科
创作手册
创作功能
其他
Studio百科
服务
BR 更新时间: 2024-01-05 16:54:51

服务是迷你世界Studio的全局服务节点,提供通用服务节点的基类。封装了很多强大的功能,让整体开发难度降低,开发效率增加,让迷你世界Studio变得简单易懂可以快速的帮助小伙伴上手,那么让我们一起来学习一下这些服务都有什么内容吧~

注:设置父节点必须是GameNode

【Service】服务

AdvertisementService

继承:Service

描述:播放广告的服务节点

应用场景:广告道具以及相关商业化内容

属性:

事件:

函数:

返回值类型

名称

描述

void

PlayAdvertising (int uin, bool success)

指定用户播放广告

void

PlayAdvertisingCallback (LuaFunction callback)

广告播放接口回调

示例代码:

local advertisementService= game:GetService("AdvertisementService")
local players = game:GetService("Players")
local playerid = players.LocalPlayer.UserId
advertisementService:PlayAdvertising(playerid ,ture)

 

AnalyticsService

继承:Service

描述:网页上报告事件并查看可视化分析结果。

应用场景:数据分析相关内容

属性:

事件:

函数:

返回值类型

名称

描述

void

ReportData (ReflexMap dataMap)

数据埋点上报

示例代码:

-- 埋点立即上报
local function ReportSend(data)
local analyService = game:GetService("AnalyticsService")
analyService:ReportData(data)end
local reportData = {
["scene_id"] = "1003", --必要 场景ID
["card_id"] = "OGM_GAME_MODE_1", --必要 栏目ID
["comp_id"] = "MainPage", --必要 组件ID
["event_code"] = "click", --必要 事件
["standby1"] = "1", --可选 需要上报的公参字段表
["standby2"] = "2",
["standby3"] = "3",
["standby4"] = "4",
["standby5"] = "5",
["standby6"] = "6",
["standby7"] = "7",
["standby8"] = "8",
["standby9"] = "9",
["standby10"] = "10",}
ReportSend(reportData)

 

CloudService

继承:Service

描述:此类是一个服务!它是Cloud节点,可以使用GetService函数获取。负责Cloud服务

应用场景:玩家相关数据存储,服务器数据存储

属性:

事件:

函数:

返回值类型

名称

描述

void

SetValue (string key, string name, string value)

设置同步value值

void

GetValue (string key, string name)

获取同步value值

void

SetValueAsync (string key, string name, string value, LuaFunction func)

设置异步value值

void

GetValueAsync (string key, string name, LuaFunction func)

获取异步value值

void

SetTable (string key, LuaTable value)

设置同步table值

void

GetTable (string key)

获取同步table值

void

SetTableAsync (string key, LuaTable value, LuaFunction func)

设置异步table值

void

GetTableAsync (string key, LuaFunction func)

获取异步table值

SandboxNode

GetOrderDataCloud (string tableName)

获取排行榜云节点

示例代码:

local utils = {}
function utils.run(func)
local status,err,ret = xpcall(func,debug.traceback)
if not status then
print("err = " .. tostring(err))
print("ret = " .. tostring(ret))
end
end
function utils.print(...)
local args = {...}
args[#args + 1] = '\n'
local tab = {}
for i, v in ipairs(args) do
tab[i] = tostring(v)
end
print(table.concat(tab,' '))end
utils.run(function()
local service = game:GetService("CloudService")
local status,value = service:setValue("test_1","global","20000")
utils.print("1111",status,value)
status,value = service:getValue("test_1","global")
utils.print("22222",status,value)
service:setValueAsync("test_1","global","30000",function(status, value)
utils.print("33333",status,value)
end)
service:getValueAsync("test_1","global",function(status, value)
utils.print("44444",status,value)
end)
local idx = 0
while idx <= 40 do
wait(1)
utils.print("55555",idx)
idx = idx + 1
end
end)
print("finish")

 

CollectionService

继承:Service

描述:Studio中的标签是不可见的。CollectionService的主要用途是注册具有特定标记的实例,您可以使用这些标记来扩展它们的行为。如果您发现自己向许多不同的对象添加了相同的脚本,那么使用CollectionService的脚本可能会更好。

应用场景:注册具有特定标记,扩展它们的行为

属性:

事件:

函数:

返回值类型

名称

描述

void

AddTag (SandboxNode node, string tag)

新增节点标签

void

RemoveTag (SandboxNode node, string tag)

移除节点标签

SandboxNode

GetTagged (string tag)

获取该标签的所有节点

table

GetTags (SandboxNode node)

获取该节点的所有标签

bool

HasTag (SandboxNode node, string tag)

该节点是否有标签

SBXSignal

GetNodeAddedSignal (string tag)

获取该标签新增的沙盒信号

SBXSignal

GetNodeRemovedSignal (string tag)

获取该标签移除的沙盒信号

示例代码:

local collectionService= game:GetService("CollectionService")
local tags = collectionService:GetTags (script)
print(tags)

 

ContentService

继承:Service

描述:用于将内容或资产加载到游戏中的服务。该服务的主要用途是将资产预加载到游戏中。当游戏中使用贴花或声音等新资产时,MiniWorldStudio将从MiniWorldStudio服务器加载与其相关的内容。在某些情况下,这对开发人员来说可能是不可取的,因为这可能会导致内容加载到游戏中之前的延迟

应用场景:预加载资源

属性:

类型

名称

描述

int

RequestQueueSize

请求队列的大小

事件:

事件类型

名称

描述

SBXSignal

NotifyAssetFetchStatus (string assetid, AssetFetchStatus status)

资源加载状态变更时,会触发一个NotifyAssetFetchStatus通知

SBXSignal

NotifyAssetStatusLoading (string assetid, int curNum, int maxNum)

资源加载Loading时通知

函数:

返回值类型

名称

描述

void

PreloadAsync (LuaFunction func, ReflexTuple reflexTuple)

异步预加载

AssetFetchStatus

GetAssetFetchStatus (string assetid)

获取资源加载状态

SBXSignal

GetAssetFetchStatusChangedSignal (string assetid)

资源加载状态变更的信号

string

GetAssetStatusInfo (string assetid)

获取资源加载状态信息

示例代码:

local contentService= game:GetService("ContentService")
local msg = contentService:GetAssetStatusInfo('RainbowId&filetype=5://188987641847353344')
print(msg)

 

DeveloperStoreService

继承:Service

描述:DeveloperStoreService负责体验内交易。可获取有关开发人员产品信息(GetProductInfo和GetDeveloperProducts)

应用场景:游戏商业化内容

属性:

事件:

函数:

返回值类型

名称

描述

void

GetDeveloperStoreItems ()

查询当前地图开发者商店列表

void

GetPlayerDeveloperProducts ()

查询指定玩家的购买商品信息

void

BuyGoods (int goodsid, string goodsdesc)

弹出购买弹窗

ReflexMap

GetProductInfo (int productid)

查询指定商品(开发者商店中商品)的信息

示例代码:

--客户端脚本LocalScript
local store = game:GetService("DeveloperStoreService")
-- 获取地图开发者商店商品列表
local function getStoreList()
local storeList = store:GetDeveloperStoreItems()
print("store list = ", storeList)
local listLength = #storeList
if listLength > 0 then
-- 遍历每个商品信息
local storeitem = {}
for _, value in pairs(storeList) do
print("store list key = ", _)
for key, info in pairs(value) do
storeitem[key] = info
print("store list key = ", key)
print("store list info = ", info)
end
end
end
return storeListend
-- 获取玩家已购买的商品列表local function getPurchasedList()
local buyList = store:GetPlayerDeveloperProducts()
print("store buy list = ", buyList)
local buyListLength = #buyList
if buyListLength > 0 then
-- 遍历每个商品信息
local buyItem = {}
for _, value in pairs(buyList) do
print("store buy list key = ", _)
for key, info in pairs(value) do
buyItem[key] = info
print("store buy list key = ", key)
print("store buy list info = ", info)
end
end
end
return buyListend
-- 获取地图开发者商店某个商品详细信息local function getGoodsInfo(goodsid)
local goodsInfo = store:GetProductInfo(goodsid)
if goodsInfo.name ~= nil then
print("goods name = ", goodsInfo["name"])
end
if goodsInfo.desc ~= nil then
print("goods desc = ", goodsInfo["desc"])
end
if goodsInfo.goodId ~= nil then
print("goods goodId = ", goodsInfo["goodId"])
end
if goodsInfo.costType ~= nil then
print("goods costType = ", goodsInfo["costType"])
end
if goodsInfo.costNum ~= nil then
print("goods costNum = ", goodsInfo["costNum"])
end
if goodsInfo.download ~= nil then
print("goods download = ", goodsInfo["download"])
end
if goodsInfo.cover ~= nil then
print("goods cover = ", goodsInfo["cover"])
end
return goodsInfoend
-- 购买开发者商店某个商品local function buyGoods(goodsid)
local info = getGoodsInfo(goodsid)
if info ~= nil and info.desc ~= nil then
local goodDesc = info["desc"]
store:BuyGoods(goodsid, goodDesc)
endend
getStoreList()getPurchasedList()
wait(10)local goodsid = 530001 -- 530001 ~ 539999buyGoods(goodsid)
-- 服务端脚本 Script
local store = game:GetService("DeveloperStoreService")
store.RemoteBuyGoodsCallBack:connect(function(uin, goodsid, code, msg)
if code ~= 0 then
print("Goods purchase failed. Error message : ",msg)
return
end
--code=0 购买成功
print("Do something") --装备道具
end)

 

FriendsService

继承:Service

描述:是一个服务,可以获取好友数量,根据索引获取好友的信息

应用场景:

属性:

事件:

函数:

返回值类型

名称

描述

int

GetSize ()

获取好友数量

ReflexTuple

GetFriendsInfoByIndex (int index)

根据好友的序列号拿到好友信息

示例代码:

------ 判断某人是否是好友 ----------
local function checkFriends(playerUin)
local friendsService = game:GetService("FriendsService")
local friendsNum = friendsService:GetSize() --获取好友数(总序列号)
for i = 0,friendsNum-1,1 do --初值,终值,步数
local uin,nickName,onLine = friendsService:GetFriendsInfoByIndex(i) --遍历好友
local isFriend = false
if playerUin == uin then --比对该uin和拉去的好友列表
isFriend = true
end
if isFriend then
print("%s: is friend",nickName)
else
print("%s: is not friend",nickName)
end
end
end
local playerUin = 1111 --已知某人的uin信息
checkFriends(playerUin)

 

GameNode

继承:Service

描述:游戏节点服务

应用场景:获取各个服务节点

属性:

类型

名称

描述

string

Name

服务名

SandboxNode

Loaded

加载完的服务

事件:

函数:

返回值类型

名称

描述

void

BindToClose (LuaFunction luaf)

关闭绑定

SandboxNode

GetService (string name)

通过名称获取该服务节点

示例代码:

local gameNode= game:GetService("GameNode")

 

GlobalService

继承:Service

描述:沙盒全局服务节点

应用场景:自定义全局服务节点

属性:

事件:

函数:

返回值类型

名称

描述

void

SyncClientGameStage (int uin, string stage)

主机执行回调:同步客机游戏阶段到主机

void

DevSaveDecode (int uin)

主机执行回调:开发阶段保存存档解码

void

DevPrintNodeTree (int uin)

主机执行回调:开发阶段序列化当前的节点,并输出

void

IDGeneratorUsed (int uin, int type, unsigned usedid)

主机执行回调:ID生成器生成客机使用id

void

IDGeneratorRequire (int uin, int type)

主机执行回调:ID生成器需要

void

SyncHostGameStage (string gamestage)

客机执行回调:同步主机游戏阶段

void

LogToRoomMaster (int lvl, string log, string file, unsigned line)

客机执行回调:房主接收云服的log

void

IDGeneratorAlloc (int type, table mins, table maxs)

客机执行回调:主机给客机分配id

void

ToDownloadScripts (table keys, table urls, table md5s)

客机下载脚本

void

ToLoadNetworkIndices (AssetNetworkData cb)

加载资源上传到云的索引

示例代码:

local globalService= game:GetService("GlobalService")
local players = game:GetService("Players")
local playerid = players.LocalPlayer.UserId
--开发阶段保存数据
globalService:DevSaveDecode (playerid )

 

 

LoadedService

继承:Service

描述:这是一个服务,可以指定加载等待

应用场景:指定加载等待

属性:

事件:

函数:

返回值类型

名称

描述

void

WaitLoaded ()

等待加载

示例代码:

 

 

MaterialService

继承:Service

描述:材质服务是负责管理材质的游戏服务,它是一个全局材质容器。对于每种基本材料类型,都可通过MaterialService管理

应用场景:管理材质

属性:

事件:

函数:

示例代码:

MouseService

继承:Service

描述:此类是一个服务!它是Mouse节点,可以使用GetService函数获取。负责Mouse服务。

应用场景:鼠标相关服务

属性:

事件:

函数:

返回值类型

名称

描述

bool

IsSight ()

是否视觉范围内

void

SetMode (int nModeType)

设置鼠标模式

ReflexMap

GetCursorPick (float mouseX, float mouseY, float range)

获取光标拾取

示例代码:

local mouseService= game:GetService("MouseService")
local isSight = mouseService:IsSight()
print('是否视觉范围内'..tostring(isSight ))

 

NetService

继承:Service

描述:沙盒网络服务

应用场景:网络通信协议服务可以自定义网络交互

属性:

事件:

函数:

返回值类型

名称

描述

NetInstance

StartWebSocketClient ()

开启一个webSocket的client

NetInstance

StartWebSocketServer ()

开启一个webSocket的server

void

CancelAsync (NetInstance id)

终止http异步请求

void

WaitAsync (NetInstance id)

等待当前http异步请求,直至返回数据或者失败

void

CloseSocket (NetInstance id)

关闭一个socket

void

SetSocketEvent (NetInstance ins, NetInstanceLuaCallback callBack)

设置socket的lua回调

void

WriteMsgToPeer (NetInstance ins, string content, string clientID)

向socket写入内容

void

WriteBinMsgToPeer (NetInstance ins, UInt8Vec content, string clientID)

向socket写入二进制数据包

void

ConnectToPeer (NetInstance ins, string ip, unsignedshort port)

client链接server

void

PingToPeer (NetInstance ins, string ip, unsignedshort port)

ping该Socket链接

void

DisconnectFromPeer (NetInstance ins, string clientID)

Socket断开连接

void

CloseWebSocket (NetInstance ins)

关闭一个webSocket的client/server

void

SetWebSocketEvent (NetInstance ins, NetInstanceLuaCallback callBack)

设置一个webSocket的lua回调

void

WriteMsgToWebSocket (NetInstance ins, string content, int clientID)

向一个webSocket写入数据

void

WriteBinMsgToWebSocket (NetInstance ins, UInt8Vec content, int clientID)

向一个webSocket写入二进制数据

void

SetupWebSocketServer (NetInstance ins, unsignedshort port)

设置websocket的sever监听端口,并开启工作线程(内部)

void

SetWebSocketServerTimeout (NetInstance ins, int time)

设置webSocket的server超时时间

void

AddWebSocketClientProtocol (NetInstance ins, string name)

添加一个webSocket的client支持的协议

void

ConnectWebSocketClient (NetInstance ins, string url)

设置一个webSocket的client链接sever(websocket支持URL中带port,所以不需要传递port)

void

DisconnectWebSocketClient (NetInstance ins)

断开一个webSocket的client实例

NetInstance

AsyncHttpGet (string id)

发起http异步get请求

NetInstance

AsyncHttpPost (string url, string postData)

发起http异步post请求

NetInstance

AsyncHttpDownload (string url, string filePath)

http异步下载

NetInstance

AsyncHttpUpload (string url, string filePath)

http异步上传

NetInstance

AsyncHttpGet2 (string url, NetInstanceLuaCallback cb)

http异步get请求,带有callback

NetInstance

AsyncHttpPost2 (string url, string postData, NetInstanceLuaCallback cb)

http异步post请求,带有callback

NetInstance

AsyncHttpDownload2 (string url, string filePath, NetInstanceLuaCallback cb)

http异步下载,带有callback

NetInstance

AsyncHttpUpload2 (string url, string filePath, NetInstanceLuaCallback cb)

http异步上传,带有callback

NetInstance

StartSocket (bool isHost, int maxConnect, int port4, int port6)

client/service请求

table

GetSocketAddress (NetInstance id)

获取当前socket的地址

table

GetIpAddress (NetInstance ins)

获取当前socket的ip地址

table

GetWebSocketServerClients (NetInstance ins)

获取一个webSocket的server持有的client会话实例数组

int

GetWebSocketClientState (NetInstance ins)

获取当前一个webSocket的client的状态(是否打开,是否可读写)

示例代码:

local netService= game:GetService("NetService")
local server=netService:StartWebSocketServer()
netService:SetupWebSocketServer(server,80)
netService:CloseSocket(server)

 

RunService

继承:Service

描述:是一个服务!管理游戏的脚本以及事件:此类是一个服务它是顶级单例,可以使用GetService函数获取。包含了用于时间管理的方法和事件,以及管理游戏或脚本所处于的内容。IsClient、IsServer、IsStudio等方法可以帮助你确定Lua代码在哪里运行。这些方法对于客户端和服务器都需要的ModuleScript是很有帮助的

应用场景:管理游戏脚本以及事件

属性:

类型

名称

描述

int

LogicFPS

逻辑帧数

int

UpdateFPS

上传帧

事件:

事件类型

名称

描述

SBXSignal

HeartBeat (double time)

输入完成时触发

SBXSignal

RenderStepped (double step)

渲染步幅事件,每次Update触发RenderStepped事件

SBXSignal

Stepped ()

步幅事件,每次Tick触发Stepped事件

SBXSignal

SystemStepped ()

步幅事件,每次系统Tick触发SystemStepped事件

函数:

返回值类型

名称

描述

void

Pause ()

如果游戏在运行则暂停游戏的模拟,暂停物理运算和脚本

void

DriveTick ()

驱动tick

bool

IsClient ()

当前的环境是否运行在客户端上

bool

IsServer ()

当前的环境是否运行在服务器上

bool

IsRemote ()

当前的环境是否远程环境

bool

IsEdit ()

当前运行环境是否为Edit(编辑)模式

bool

IsRunMode ()

当前运行环境是否为Running模式

double

CurrentSteadyTimeStampMS ()

获取当前时间戳,精确到毫秒。不随本地时间修改而改变。9位

bool

IsAutoTick ()

是否自动tick

int

GetFramePerSecond ()

每秒获取帧数

string

GetMiniGameVersion ()

获取游戏端版本号

void

BindToRenderStep (string szKey, int priority, LuaFunction func)

绑定RenderStep事件的Lua函数。RenderPriority为当前游戏内渲染层级,可根据需要进行插入

void

UnbindFromRenderStep (string szKey)

解除绑定RenderStep事件的Lua函数

void

SetAutoTick (bool set)

设置自动tick间隙

void

SetFramePerSecond (int fps)

设置每秒帧数值

示例代码:

local runService= game:GetService("RunService")
local isclient = runService:IsClient ()
print('是否运行在客户端'..tostring(isclient))

 

Service

继承:SandboxNode

描述:全局服务节点,提供通用服务节点的基类。注:设置父节点必须是GameNode

应用场景:全局服务节点,通用服务节点的基类。

属性:

类型

名称

描述

string

Name

服务节点名(临时使用)

事件:

函数:

示例代码:

local service= game:GetService("RunService")
print(service.Name)

 

Setting

继承:Service

描述:提供地图修改游戏配置的相关接口

应用场景:游戏相关配置

属性:

事件:

函数:

示例代码:

 

StarterGui

继承:SandboxNode

描述:全局服务节点,提供通用服务节点的基类。注:设置父节点必须是GameNode

StarterGui 服务是一个容器对象,旨在保存 GUI 对象(例如 ScreenGuis)。

StarterGui 作为容器 当 Player.Character 重生时,其 PlayerGui 的内容将被清空。 然后,StarterGui 的子级及其后代将被复制到 PlayerGui 中。

GUI 对象只会被放置到每个 Player 的 PlayerGui 中一次,并且在 Player 重生时不会被删除。

StarterGui 作为界面 StarterGui 还包括一系列允许您与 CoreGui 交互的功能。 可用于禁用 CoreGui 的元素。 StarterGui:SetCore() 可以执行一系列功能,包括创建通知和系统消息。

应用场景:自定义用户UI和交互、游戏的系统

属性:

类型

名称

描述

bool

IsRockerEnable

摇杆是否启用

float

WalkZone

步行区

string

BackGroundIcon

背景图标

string

DotIcon

点图标

float

DotScale

点比例

float

InactiveAlpha

透明度是否激活

float

Alpha

透明度

Vector2

RockerPosition

摇杆位置

Vector2

RockerSize

摇杆尺寸

ScaleType

BackGroundScaleType

背景比例尺类型

Vector4

BackGroundSliceCenter

背景切片中心

ScaleType

DotScaleType

点刻度类型

Vector4

DotSliceCenter

点切片中心

string

JumpIcon

跳转图标

bool

JumpIconShow

跳转图标显示

事件:

事件类型

名称

描述

SBXSignal

NotifyRockerChange (string name)

摇杆切换会触发一个事件

函数:

示例代码:

local starterGui = game:GetService("StarterGui")

 

StarterPack

继承:SandboxNode

描述:一个服务级容器,当玩家生成时,其内容会被复制到每个玩家的背包中。 它一般用来存放Tools,但有时也用来存放LocalScripts,以确保每个玩家都得到一份副本。

当玩家的角色生成时,StarterPack 及其 StarterGear 的内容将被复制到他们的背包中。 一旦角色死亡,背包就会被移除并创建一个新背包——使用 StarterPack 和 StarterGear 的内容填充它。

StarterPack 用于确定所有玩家生成时都会使用的一组工具。 如果开发人员想要确保某些工具可供特定玩家使用,那么他们需要将这些工具直接设置为玩家的背包的父级。

注意:虽然 StarterPack 的内容通常是预定义的,但可以在游戏运行时通过相应地添加和删除工具来更改内容。 当玩家重生并重新加载背包时,这些更新将传递到玩家的背包上。 对 StarterPack 的更改应由服务器进行。

应用场景:玩家预制背包存放预制数据

属性:

事件:

函数:

示例代码:

--可以使用以下代码将工具添加到 StarterPack。
Tool.Parent = game:GetService("StarterPack")

 

UtilService

继承:Service

描述:接口使用。不用重复新增不同的service.

应用场景:新增Service

属性:

事件:

函数:

示例代码:

local UtilService = game:GetService("UtilService")
站点有内容要更新是否更新。
更新
忽略