Skip to content

类: Scene ​

使用本游戏引擎所有的场景都需要继承Scene

示例 ​

ts
@LM.Class("MyScene") // 必须使用@LM.Class注册MyScene, constructor 构造函数无需在子类中实现。
export default class MyScene extends LM.Scene {
     init(){
         // todo 实现游戏化的初始逻辑
     }
     update(){
         // todo 实现游戏的循环执行逻辑,每帧执行一次
     }
}

继承于 ​

构造函数 ​

构造函数 ​

new Scene(): Scene

返回 ​

Scene

属性 ​

属性类型描述

currentChildCount

number

获取当前scene的子对象数量包括嵌套子对象

isSaveScene

boolean

用于标识scene是否为存档scene,如果是存档scene 在存档截图时会过滤掉isSaveScene为true的scene

mediator

any

Scene的容器类,包含了scene的所有内部数值事件处理和ui事件处理

示例

ts
this.setVar({....},this.mediator)

params

any

传入参数

示例

ts
const p1 = this.params[0]
cosnt p2 = this.params[1]

方法 ​

addChild() ​

addChild<T>(child): void

添加子对象

类型参数 ​

T ​

T extends UIBaseView

参数 ​

child ​

T

返回 ​

void

示例 ​

ts
let img = new LM.Image()
this.addChild(img)

awake() ​

awake(): void

声明周期函数 进入Scene的之后执行一次,执行顺序在init之前

返回 ​

void


beforeDestroy() ​

beforeDestroy(): void

当前scene即将销毁时执行一次

返回 ​

void


close() ​

close(outData): void

关闭当前scene

参数 ​

outData ​

any[]

传出参数

返回 ​

void

示例 ​

ts
this.close(["传出参数1","传出参数2"])

Warning ​

剧情呼叫的第一个scene关闭后会直接回到剧情,建议将剧情呼叫的第一个scene作为管理scene或者背景,在需要回到剧情时关闭


getConstData() ​

getConstData(): any

获取常量库数据 (这是引用传递 使用前请一定要进行深拷贝 否则会影响常量库原有值)

返回 ​

any

示例 ​

ts
let data = this.getConstData();

getControlByAlias() ​

getControlByAlias(alias): UIBaseView

根据控件别名获取控件

参数 ​

alias ​

string

返回 ​

UIBaseView

示例 ​

ts
let text = this.getControlByAlias('text1')

getValue() ​

getValue(path): any

获取数值

参数 ​

path ​

string

数值

返回 ​

any

示例 ​

// 通过这种方式获取与其他系统交互的变量,在Scene环境中
cosnt i1 = this.getValue('this.int-1')

init() ​

init(): void

声明周期函数 进入Scene的之后执行一次,执行顺序在awake之后

返回 ​

void


onRestore() ​

onRestore(data): void

存档还原时触发

参数 ​

data ​

any

存档数据

返回 ​

void

示例 ​

ts
onRestore(data){
    this.test = data["test"]
}

onSave() ​

onSave(): any

调用LM.save()时触发

返回 ​

any

示例 ​

ts
onSave(){
    return {
        "test":this.test
    }
}

onSceneClose() ​

onSceneClose(data): void

呼叫的scene被关闭时会调用此方法

参数 ​

data ​

LMSceneCloseData

返回 ​

void

示例 ​

ts
onSceneClose(data:LMSceneCloseData){
 //id为data.id的scene关闭时会触发此方法
   console.log(data)
}

preLoadRes() ​

preLoadRes(): string[]

设置预加载资源

返回 ​

string[]

资源路径数组


preLoadResFinish() ​

preLoadResFinish(): void

预加载资源完成之后执行一次,执行顺序在init之前

返回 ​

void


removeAllChild() ​

removeAllChild(): void

返回 ​

void

已被弃用 ​

自v1.3.0起废弃,请使用新的removeAllChildren 移除所有子对象 this.removeAllChild()


removeAllChildren() ​

removeAllChildren(): void

返回 ​

void


removeChild() ​

removeChild(child): void

移除子对象

参数 ​

child ​

UIBaseView

返回 ​

void

示例 ​

ts
let text = new LM.TextView();
this.addChild(text)
this.removeChild(text)

setSceneAnimation() ​

setSceneAnimation(styleIn, styleOut, time?): any

设置入场出场动画

参数 ​

styleIn ​

SCENE_ANIMATION_STYLE

入场动画类型

styleOut ​

SCENE_ANIMATION_STYLE

出场动画类型

time? ​

number

动画时间 单位:毫秒 默认为300毫秒

返回 ​

any

示例 ​

ts
this.setSceneAnimation(SCENE_ANIMATION_STYLE.FADE_IN,SCENE_ANIMATION_STYLE.FADE_OUT,1000)

setValue() ​

setValue(path, data): any

设置数值

参数 ​

path ​

string

数值

data ​

any

数据

返回 ​

any

示例 ​

// 通过这种方式设置其他系统交互的变量
this.setValue('this.int-1',9) 临时数值的设置(基于scene或者橱窗本身作用域)
this.setValue('root.int-1',9) 全局数值的设置 (基于全局作用域)
this.setValue('root.plus_int-1',9) 全局二周目数值的设置 (基于全局作用域)
this.setValue('root.plus_list-1',[1,1]) 全局二周目数组的设置 (基于全局作用域)
this.setValue('this.savelist-1',[9]) 储存表数组的设置 (基于全局作用域)

showScene() ​

showScene(name, inData?): Promise<string>

添加一个scene

参数 ​

name ​

string

scene名称

inData? ​

any[]

传入参数

返回 ​

Promise<string>

示例 ​

ts
LM.showScene('test',["传参1","传参2"])

update() ​

update(deltaTime?): void

循环更新函数 周期1帧一次

参数 ​

deltaTime? ​

any

帧间隔时间,单位毫秒

返回 ​

void