XTC_LuaEnv
Lua脚本环境
lua脚本环境模块可在程序运行时以热插拔的方式加载执行lua脚本编写的脚本化微应用程序。
术语约定
脚本化微应用
一个包含了lua脚本文件和图片、视频、音乐、模型等多种媒体文件打包而成的归档文件,可在加载运行后提供和主程序一致的交互体验。
根脚本
微应用程序至少需要包含一个名为root.lua的根脚本文件,微应用加载后,会执行root.lua,微应用的所有逻辑都从根脚本开始。
一个根脚本需要包含以下结构:
local function run()
G_LOGGER:Info("lua root.Run ...")
G_LOGGER:Info(G_SLOT_UI.name)
G_LOGGER:Info(G_SLOT_WORLD.name)
end
local function update()
end
local function stop()
G_LOGGER:Info("lua root.Stop ...")
end
local function handleEvent(_event, _data)
G_LOGGER:Info(_event)
end
root = {
Run = run,
Update = update,
Stop = stop,
HandleEvent = handleEvent,
}
功能特性
运行时热插拔
模块可在运行时从外部插入微应用运行,同时可将微应用从运行时拔除。
全局导出
模块中已经导出了一些常用的可访问成员到lua空间,在lua代码中可以直接调用。
G_LOGGER
XTC.FMP.LIB.MVCS.Logger
日志的实例
G_SLOT_UI
UnityEngine.GameObject
UI挂载槽的实例
G_SLOT_WORLD
UnityEngine.GameObject
3D世界挂载槽的实例
G_API_PROXY
XTC.FMP.MOD.LuaEnv.LIB.APIProxy
API代理的实例
G_FONT_MAIN
UnityEngine.Font
主要的字体
G_RUNNER_COROUTINE
XTC.FMP.MOD.LuaEnv.LIB.CoroutineRunner
协程的运行组件
配置说明
标准范例:
<?xml version="1.0" encoding="utf-8"?>
<MyConfig version="1.0">
<!-- UI
visible: 预加载完成后是否显示
slot: ui根节点在主Canvas中的挂载路径
-->
<UI visible="true" slot="[root]"/>
<!-- World
visible: 预加载完成后是否显示
slot: world根节点的挂载路径
-->
<World visible="true" slot="[root]"/>
<!-- 远程过程调用
address: 地址
-->
<GRPC address="https://localhost:19000"/>
<!-- 样式列表
name: 名称
StandardColor: 标准色,如未定义,lsa使用自己的颜色,如定义,lsa优先使用标准色
StandardColor.primary: 主要色,RGBA的HEX值
StandardColor.secondary: 次要色,RGBA的HEX值
StandardColor.success: 成功色,RGBA的HEX值
StandardColor.danger: 危险色,RGBA的HEX值
StandardColor.warning: 警告色,RGBA的HEX值
StandardColor.info: 主要颜色,RGBA的HEX值
StandardColor.light: 亮色,RGBA的HEX值
StandardColor.dark: 暗色,RGBA的HEX值
-->
<Styles>
<Style name="default">
<StandardColor primary="" secondary="" success="" danger="" warning="" info="" light="" dark=""/>
</Style>
</Styles>
<!-- 预创建的实例列表
uid: 实例的唯一ID
style: 使用的样式名
uiSlot: UI挂载的路径
worldSlot: World挂载的路径
-->
<Instances>
<Instance uid="default" style="default" uiSlot="" worldSlot=""/>
</Instances>
<!-- 预加载 -->
<Preload>
<!-- 消息订阅的主题
message: 消息
Parameter.key: 参数的键
Parameter.value: 参数的值
Parameter.type: 参数的类型,支持的类型为string,int,float,bool
-->
<Subjects>
<Subject message="_/XTC/LuaEnv/Open">
<Parameters>
<Parameter key="uid" value="default" type="string"/>
<Parameter key="source" value="assloud://" type="string"/>
<Parameter key="uri" value="XTC.LuaEnv/_resources/1.lsa#" type="string"/>
<Parameter key="delay" value="0" type="float"/>
</Parameters>
</Subject>
</Subjects>
</Preload>
</MyConfig>
消息订阅
TODO
依赖插件
oelMVCS
oelArchive
NVorbis
XLuaPlugin
模板列表
Karaoke (卡拉OK)
可更改主题皮肤
可切换人声和伴唱两种模式
可控制播放进度
可控制音量大小
文件结构
|- x.lsa
|- root.lua // 根脚本
|- app.lua // 应用逻辑脚本
|- style.lua // 主题样式脚本
|- lrc.lua // 歌词脚本
|- accompaniment.ogg // 不带人声的伴奏的音频,建议为(44100Hz, 192kbps, stereo)
|- music.ogg // 带人声的音乐的音频,建议为(44100Hz, 192kbps, stereo)
|- bg.jpg // 背景图片,拉伸显示
|- frame.png // 背景边框图片,九宫格显示
|- cover.png // 中央唱片图
|- handle.png // 进度条按钮图
|- icon-accompaniment.png // 伴奏按钮图
|- icon-music.png // 唱按钮图
|- icon-pause.png // 暂停按钮图
|- icon-play.png // 播放按钮图
|- icon-volume.png // 音量按钮图
|- loading.png // 加载图
|- panel-volume.png // 音量条背景图
配置说明
修改样式
样式的修改可替换图片和修改style.lua中的值
更改歌词
将歌词格式的文本替换到lrc.lua中
PhotoAlbum (相册)
可更改主题皮肤
可浏览图片预览
可缩放图片大小
可显示和关闭图片配文
文件结构
|- x.lsa
|- root.lua // 根脚本
|- app.lua // 应用逻辑脚本
|- unityUtilities.lua // 通用工具脚本
|- style.lua // 主题样式脚本
|- config.lua // 配置脚本
|- description_off.png // 描述关闭按钮图片
|- description_on.png // 描述打开按钮图片
|- handle.png // 缩放条按钮图
|- slider.png // 缩放条背景图
|- progress.png // 加载进度背景图
|- images // 图片文件夹
|- img#1.jpg // 第一张图片
|- ...
配置说明
修改样式
样式的修改可替换图片和修改style.lua中的值
更改图片
将图片放置到images文件夹中,并按 img#{n}.jpg方式命名,n从1开始。
修改完图片后更改config.lua中的图片数量值
local count = 4
同时添加图片的描述
description["img#1.jpg"]["en_US"] = "图片1的描述"
ImagePresentation (图片演示)
可更改主题皮肤
可使用上一页和下一页进行翻页
可点击画面显示和关闭工具栏
工具栏可拖拽
可在工具栏中打开图片预览列表
文件结构
|- x.lsa
|- root.lua // 根脚本
|- app.lua // 应用逻辑脚本
|- config.lua // 配置脚本
|- unityUtilities.lua // 通用工具脚本
|- style.lua // 主题样式脚本
|- toolbar_drag.png // 工具栏拖拽按钮图片
|- toolbar_prev.png // 工具栏上一页按钮图片
|- toolbar_next.png // 工具栏下一页按钮图片
|- toolbar_list.png // 工具栏列表按钮图片
|- images // 图片文件夹
|- img#1.jpg // 第一张图片
|- ...
配置说明
修改样式
样式的修改可替换图片和修改style.lua中的值
更改图片
将图片放置到images文件夹中,并按 img#{n}.jpg方式命名,n从1开始。
修改完图片后更改config.lua中的图片数量值
local count = 4
Recitation (朗诵)
可更改主题皮肤
可控制播放进度
可控制音量大小
滚动的文章显示
文件结构
|- x.lsa
|- root.lua // 根脚本
|- app.lua // 应用逻辑脚本
|- style.lua // 主题样式脚本
|- config.lua // 配置脚本
|- audio.ogg // 朗诵音频,建议为(44100Hz, 192kbps, stereo)
|- bg_landscape.jpg // 横屏的背景图片,拉伸显示
|- bg_portrait.jpg // 竖屏的背景图片,拉伸显示
|- frame.png // 内容边框图片,九宫格显示,需搭配frame_border参数使用
|- icon-pause.png // 暂停按钮图
|- icon-play.png // 播放按钮图
|- icon-volume.png // 音量按钮图
|- loading.png // 加载图
|- mask.png // 内容区域的遮罩图,九宫格显示,需搭配mask_border参数使用
|- progress-bg.png // 进度条背景图
|- progress-fill.png // 进度条填充图
|- progress-handle.png // 进度条按钮图
|- toolbar-bg.png // 工具栏背景图
|- volume-bg.png // 音量条背景图
|- volume-handle.png // 音量条按钮图
配置说明
修改样式
样式的修改可替换图片和修改style.lua中的值
更改文字显示内容
修改config.lua中对应的值
更新日志
Recitation/6.0.1
[修正] 进度条拖动的各种问题 [新增] 进度条拖动时同步内容位置
PhotoAlbum/6.0.1
[修正] 无描述时描述框不会隐藏
Karaoke/6.1.1
[修正] 修正进度拖拽的各种问题 [修改] 拖动进度时刷新歌词
ImagePresentation/6.0.2
[修正] 工具栏能拖动到屏幕外 [修改] 上一个和下一个按钮的可交互状态
0.15.1
[修正] 修改PreloadAudioClip的多线程卡住
0.14.0
[修改] 更新框架到1.83
Recitation/6.0.0
[新增] 第一版
0.11.0
[新增] 到处标准色到Lua环境
ImagePresentation/6.0.0
[新增] 第一版
PhotoAlbum/6.0.0
[新增] 第一版
0.10.0
[更新] 将NLayer组件替换为NVorbis [新增] 导出协程运行组件到lua运行时 [更新] 音频读取使用流方式加快加载速度
Karaoke/6.1.0
[新增] 预加载完成后使用协程暂停1秒 [更改] 使用ogg替换mp3
0.9.0
[更新] 关闭时结束读取线程
Karaoke/6.0.1
[修正] 播放进度无法点击的问题 [更新] 自动循环播放
Last updated