0.10

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

协程的运行组件

配置说明

标准范例:

消息订阅

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

更新日志

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