服务是迷你世界Studio的全局服务节点,提供通用服务节点的基类。封装了很多强大的功能,让整体开发难度降低,开发效率增加,让迷你世界Studio变得简单易懂可以快速的帮助小伙伴上手,那么让我们一起来学习一下这些服务都有什么内容吧~
注:设置父节点必须是GameNode
继承:Service
描述:播放广告的服务节点
应用场景:广告道具以及相关商业化内容
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
PlayAdvertising (int uin, bool success) |
指定用户播放广告 |
|
PlayAdvertisingCallback (LuaFunction callback) |
广告播放接口回调 |
示例代码:
local advertisementService= game:GetService("AdvertisementService")
local players = game:GetService("Players")
local playerid = players.LocalPlayer.UserId
advertisementService:PlayAdvertising(playerid ,ture)
继承:Service
描述:网页上报告事件并查看可视化分析结果。
应用场景:数据分析相关内容
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
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)
继承:Service
描述:此类是一个服务!它是Cloud节点,可以使用GetService函数获取。负责Cloud服务
应用场景:玩家相关数据存储,服务器数据存储
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
设置同步value值 |
||
获取同步value值 |
||
SetValueAsync (string key, string name, string value, LuaFunction func) |
设置异步value值 |
|
GetValueAsync (string key, string name, LuaFunction func) |
获取异步value值 |
|
设置同步table值 |
||
获取同步table值 |
||
SetTableAsync (string key, LuaTable value, LuaFunction func) |
设置异步table值 |
|
GetTableAsync (string key, LuaFunction func) |
获取异步table值 |
|
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")
继承:Service
描述:Studio中的标签是不可见的。CollectionService的主要用途是注册具有特定标记的实例,您可以使用这些标记来扩展它们的行为。如果您发现自己向许多不同的对象添加了相同的脚本,那么使用CollectionService的脚本可能会更好。
应用场景:注册具有特定标记,扩展它们的行为
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
AddTag (SandboxNode node, string tag) |
新增节点标签 |
|
RemoveTag (SandboxNode node, string tag) |
移除节点标签 |
|
获取该标签的所有节点 |
||
GetTags (SandboxNode node) |
获取该节点的所有标签 |
|
HasTag (SandboxNode node, string tag) |
该节点是否有标签 |
|
GetNodeAddedSignal (string tag) |
获取该标签新增的沙盒信号 |
|
GetNodeRemovedSignal (string tag) |
获取该标签移除的沙盒信号 |
示例代码:
local collectionService= game:GetService("CollectionService")
local tags = collectionService:GetTags (script)
print(tags)
继承:Service
描述:用于将内容或资产加载到游戏中的服务。该服务的主要用途是将资产预加载到游戏中。当游戏中使用贴花或声音等新资产时,MiniWorldStudio将从MiniWorldStudio服务器加载与其相关的内容。在某些情况下,这对开发人员来说可能是不可取的,因为这可能会导致内容加载到游戏中之前的延迟
应用场景:预加载资源
属性:
类型 |
名称 |
描述 |
RequestQueueSize |
请求队列的大小 |
事件:
事件类型 |
名称 |
描述 |
NotifyAssetFetchStatus (string assetid, AssetFetchStatus status) |
资源加载状态变更时,会触发一个NotifyAssetFetchStatus通知 |
|
NotifyAssetStatusLoading (string assetid, int curNum, int maxNum) |
资源加载Loading时通知 |
函数:
返回值类型 |
名称 |
描述 |
PreloadAsync (LuaFunction func, ReflexTuple reflexTuple) |
异步预加载 |
|
GetAssetFetchStatus (string assetid) |
获取资源加载状态 |
|
GetAssetFetchStatusChangedSignal (string assetid) |
资源加载状态变更的信号 |
|
GetAssetStatusInfo (string assetid) |
获取资源加载状态信息 |
示例代码:
local contentService= game:GetService("ContentService")
local msg = contentService:GetAssetStatusInfo('RainbowId&filetype=5://188987641847353344')
print(msg)
继承:Service
描述:DeveloperStoreService负责体验内交易。可获取有关开发人员产品信息(GetProductInfo和GetDeveloperProducts)
应用场景:游戏商业化内容
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
GetDeveloperStoreItems () |
查询当前地图开发者商店列表 |
|
GetPlayerDeveloperProducts () |
查询指定玩家的购买商品信息 |
|
弹出购买弹窗 |
||
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)
继承:Service
描述:是一个服务,可以获取好友数量,根据索引获取好友的信息
应用场景:
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
GetSize () |
获取好友数量 |
|
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)
继承:Service
描述:游戏节点服务
应用场景:获取各个服务节点
属性:
类型 |
名称 |
描述 |
Name |
服务名 |
|
Loaded |
加载完的服务 |
事件:
无
函数:
返回值类型 |
名称 |
描述 |
BindToClose (LuaFunction luaf) |
关闭绑定 |
|
GetService (string name) |
通过名称获取该服务节点 |
示例代码:
local gameNode= game:GetService("GameNode")
继承:Service
描述:沙盒全局服务节点
应用场景:自定义全局服务节点
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
SyncClientGameStage (int uin, string stage) |
主机执行回调:同步客机游戏阶段到主机 |
|
DevSaveDecode (int uin) |
主机执行回调:开发阶段保存存档解码 |
|
DevPrintNodeTree (int uin) |
主机执行回调:开发阶段序列化当前的节点,并输出 |
|
IDGeneratorUsed (int uin, int type, unsigned usedid) |
主机执行回调:ID生成器生成客机使用id |
|
IDGeneratorRequire (int uin, int type) |
主机执行回调:ID生成器需要 |
|
SyncHostGameStage (string gamestage) |
客机执行回调:同步主机游戏阶段 |
|
LogToRoomMaster (int lvl, string log, string file, unsigned line) |
客机执行回调:房主接收云服的log |
|
IDGeneratorAlloc (int type, table mins, table maxs) |
客机执行回调:主机给客机分配id |
|
ToDownloadScripts (table keys, table urls, table md5s) |
客机下载脚本 |
|
加载资源上传到云的索引 |
示例代码:
local globalService= game:GetService("GlobalService")
local players = game:GetService("Players")
local playerid = players.LocalPlayer.UserId
--开发阶段保存数据
globalService:DevSaveDecode (playerid )
继承:Service
描述:这是一个服务,可以指定加载等待
应用场景:指定加载等待
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
WaitLoaded () |
等待加载 |
示例代码:
继承:Service
描述:材质服务是负责管理材质的游戏服务,它是一个全局材质容器。对于每种基本材料类型,都可通过MaterialService管理
应用场景:管理材质
属性:
无
事件:
无
函数:
无
示例代码:
继承:Service
描述:此类是一个服务!它是Mouse节点,可以使用GetService函数获取。负责Mouse服务。
应用场景:鼠标相关服务
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
IsSight () |
是否视觉范围内 |
|
设置鼠标模式 |
||
GetCursorPick (float mouseX, float mouseY, float range) |
获取光标拾取 |
示例代码:
local mouseService= game:GetService("MouseService")
local isSight = mouseService:IsSight()
print('是否视觉范围内'..tostring(isSight ))
继承:Service
描述:沙盒网络服务
应用场景:网络通信协议服务可以自定义网络交互
属性:
无
事件:
无
函数:
返回值类型 |
名称 |
描述 |
开启一个webSocket的client |
||
开启一个webSocket的server |
||
CancelAsync (NetInstance id) |
终止http异步请求 |
|
WaitAsync (NetInstance id) |
等待当前http异步请求,直至返回数据或者失败 |
|
CloseSocket (NetInstance id) |
关闭一个socket |
|
SetSocketEvent (NetInstance ins, NetInstanceLuaCallback callBack) |
设置socket的lua回调 |
|
WriteMsgToPeer (NetInstance ins, string content, string clientID) |
向socket写入内容 |
|
WriteBinMsgToPeer (NetInstance ins, UInt8Vec content, string clientID) |
向socket写入二进制数据包 |
|
ConnectToPeer (NetInstance ins, string ip, unsignedshort port) |
client链接server |
|
PingToPeer (NetInstance ins, string ip, unsignedshort port) |
ping该Socket链接 |
|
DisconnectFromPeer (NetInstance ins, string clientID) |
Socket断开连接 |
|
CloseWebSocket (NetInstance ins) |
关闭一个webSocket的client/server |
|
SetWebSocketEvent (NetInstance ins, NetInstanceLuaCallback callBack) |
设置一个webSocket的lua回调 |
|
WriteMsgToWebSocket (NetInstance ins, string content, int clientID) |
向一个webSocket写入数据 |
|
WriteBinMsgToWebSocket (NetInstance ins, UInt8Vec content, int clientID) |
向一个webSocket写入二进制数据 |
|
SetupWebSocketServer (NetInstance ins, unsignedshort port) |
设置websocket的sever监听端口,并开启工作线程(内部) |
|
SetWebSocketServerTimeout (NetInstance ins, int time) |
设置webSocket的server超时时间 |
|
AddWebSocketClientProtocol (NetInstance ins, string name) |
添加一个webSocket的client支持的协议 |
|
ConnectWebSocketClient (NetInstance ins, string url) |
设置一个webSocket的client链接sever(websocket支持URL中带port,所以不需要传递port) |
|
断开一个webSocket的client实例 |
||
AsyncHttpGet (string id) |
发起http异步get请求 |
|
AsyncHttpPost (string url, string postData) |
发起http异步post请求 |
|
AsyncHttpDownload (string url, string filePath) |
http异步下载 |
|
AsyncHttpUpload (string url, string filePath) |
http异步上传 |
|
AsyncHttpGet2 (string url, NetInstanceLuaCallback cb) |
http异步get请求,带有callback |
|
AsyncHttpPost2 (string url, string postData, NetInstanceLuaCallback cb) |
http异步post请求,带有callback |
|
AsyncHttpDownload2 (string url, string filePath, NetInstanceLuaCallback cb) |
http异步下载,带有callback |
|
AsyncHttpUpload2 (string url, string filePath, NetInstanceLuaCallback cb) |
http异步上传,带有callback |
|
StartSocket (bool isHost, int maxConnect, int port4, int port6) |
client/service请求 |
|
获取当前socket的地址 |
||
GetIpAddress (NetInstance ins) |
获取当前socket的ip地址 |
|
获取一个webSocket的server持有的client会话实例数组 |
||
获取当前一个webSocket的client的状态(是否打开,是否可读写) |
示例代码:
local netService= game:GetService("NetService")
local server=netService:StartWebSocketServer()
netService:SetupWebSocketServer(server,80)
netService:CloseSocket(server)
继承:Service
描述:是一个服务!管理游戏的脚本以及事件:此类是一个服务它是顶级单例,可以使用GetService函数获取。包含了用于时间管理的方法和事件,以及管理游戏或脚本所处于的内容。IsClient、IsServer、IsStudio等方法可以帮助你确定Lua代码在哪里运行。这些方法对于客户端和服务器都需要的ModuleScript是很有帮助的
应用场景:管理游戏脚本以及事件
属性:
类型 |
名称 |
描述 |
LogicFPS |
逻辑帧数 |
|
UpdateFPS |
上传帧 |
事件:
事件类型 |
名称 |
描述 |
输入完成时触发 |
||
RenderStepped (double step) |
渲染步幅事件,每次Update触发RenderStepped事件 |
|
Stepped () |
步幅事件,每次Tick触发Stepped事件 |
|
SystemStepped () |
步幅事件,每次系统Tick触发SystemStepped事件 |
函数:
返回值类型 |
名称 |
描述 |
Pause () |
如果游戏在运行则暂停游戏的模拟,暂停物理运算和脚本 |
|
DriveTick () |
驱动tick |
|
IsClient () |
当前的环境是否运行在客户端上 |
|
IsServer () |
当前的环境是否运行在服务器上 |
|
IsRemote () |
当前的环境是否远程环境 |
|
IsEdit () |
当前运行环境是否为Edit(编辑)模式 |
|
IsRunMode () |
当前运行环境是否为Running模式 |
|
获取当前时间戳,精确到毫秒。不随本地时间修改而改变。9位 |
||
IsAutoTick () |
是否自动tick |
|
每秒获取帧数 |
||
获取游戏端版本号 |
||
BindToRenderStep (string szKey, int priority, LuaFunction func) |
绑定RenderStep事件的Lua函数。RenderPriority为当前游戏内渲染层级,可根据需要进行插入 |
|
UnbindFromRenderStep (string szKey) |
解除绑定RenderStep事件的Lua函数 |
|
SetAutoTick (bool set) |
设置自动tick间隙 |
|
SetFramePerSecond (int fps) |
设置每秒帧数值 |
示例代码:
local runService= game:GetService("RunService")
local isclient = runService:IsClient ()
print('是否运行在客户端'..tostring(isclient))
继承:SandboxNode
描述:全局服务节点,提供通用服务节点的基类。注:设置父节点必须是GameNode
应用场景:全局服务节点,通用服务节点的基类。
属性:
类型 |
名称 |
描述 |
Name |
服务节点名(临时使用) |
事件:
无
函数:
无
示例代码:
local service= game:GetService("RunService")
print(service.Name)
继承:Service
描述:提供地图修改游戏配置的相关接口
应用场景:游戏相关配置
属性:
无
事件:
无
函数:
无
示例代码:
继承:SandboxNode
描述:全局服务节点,提供通用服务节点的基类。注:设置父节点必须是GameNode
StarterGui 服务是一个容器对象,旨在保存 GUI 对象(例如 ScreenGuis)。
StarterGui 作为容器 当 Player.Character 重生时,其 PlayerGui 的内容将被清空。 然后,StarterGui 的子级及其后代将被复制到 PlayerGui 中。
GUI 对象只会被放置到每个 Player 的 PlayerGui 中一次,并且在 Player 重生时不会被删除。
StarterGui 作为界面 StarterGui 还包括一系列允许您与 CoreGui 交互的功能。 可用于禁用 CoreGui 的元素。 StarterGui:SetCore() 可以执行一系列功能,包括创建通知和系统消息。
应用场景:自定义用户UI和交互、游戏的系统
属性:
类型 |
名称 |
描述 |
IsRockerEnable |
摇杆是否启用 |
|
WalkZone |
步行区 |
|
BackGroundIcon |
背景图标 |
|
DotIcon |
点图标 |
|
DotScale |
点比例 |
|
InactiveAlpha |
透明度是否激活 |
|
Alpha |
透明度 |
|
RockerPosition |
摇杆位置 |
|
RockerSize |
摇杆尺寸 |
|
BackGroundScaleType |
背景比例尺类型 |
|
BackGroundSliceCenter |
背景切片中心 |
|
DotScaleType |
点刻度类型 |
|
DotSliceCenter |
点切片中心 |
|
JumpIcon |
跳转图标 |
|
JumpIconShow |
跳转图标显示 |
事件:
事件类型 |
名称 |
描述 |
NotifyRockerChange (string name) |
摇杆切换会触发一个事件 |
函数:
无
示例代码:
local starterGui = game:GetService("StarterGui")
继承:SandboxNode
描述:一个服务级容器,当玩家生成时,其内容会被复制到每个玩家的背包中。 它一般用来存放Tools,但有时也用来存放LocalScripts,以确保每个玩家都得到一份副本。
当玩家的角色生成时,StarterPack 及其 StarterGear 的内容将被复制到他们的背包中。 一旦角色死亡,背包就会被移除并创建一个新背包——使用 StarterPack 和 StarterGear 的内容填充它。
StarterPack 用于确定所有玩家生成时都会使用的一组工具。 如果开发人员想要确保某些工具可供特定玩家使用,那么他们需要将这些工具直接设置为玩家的背包的父级。
注意:虽然 StarterPack 的内容通常是预定义的,但可以在游戏运行时通过相应地添加和删除工具来更改内容。 当玩家重生并重新加载背包时,这些更新将传递到玩家的背包上。 对 StarterPack 的更改应由服务器进行。
应用场景:玩家预制背包存放预制数据
属性:
无
事件:
无
函数:
无
示例代码:
--可以使用以下代码将工具添加到 StarterPack。
Tool.Parent = game:GetService("StarterPack")
继承:Service
描述:接口使用。不用重复新增不同的service.
应用场景:新增Service
属性:
无
事件:
无
函数:
无
示例代码:
local UtilService = game:GetService("UtilService")