跳到主要内容

create 创建脚本管理器(使用脚本数据)

create

类型: MethodDeclaration

所属类: ScriptManager

定义位置: event.ts

描述

创建脚本管理器(使用脚本数据)

参数 owner: 脚本宿主对象

参数 data: 脚本数据列表

返回值:生成的脚本管理器

参数

参数名类型描述默认值
ownerobject--
dataArray<ScriptData>--

返回值

类型: ScriptManager

生成的脚本管理器

源代码

位置: 第 918 行

public static create(owner: object, data: Array<ScriptData>): ScriptManager {
const manager = new ScriptManager(owner)
// 如果脚本列表不为空
if (data.length > 0) {
for (const wrap of data) {
// 如果脚本已禁用,跳过
if (wrap.enabled === false) continue
// 初始化以及重构参数列表(丢弃无效参数)
if (wrap.initialized === undefined) {
wrap.initialized = true
wrap.parameters = ScriptManager.compileParamList(wrap.id, wrap.parameters)
}
const {id, parameters} = wrap
const script = Data.scripts[id]
// 如果不存在脚本,发送警告
if (script === undefined) {
const meta = Data.manifest.guidMap[id]
const name = meta?.path ?? `#${id}`
console.error(new Error(`The script is missing: ${name}`), owner)
continue
}
// 创建脚本对象实例,并传递脚本参数
const instance = new script.constructor(owner)
const length = parameters.length
for (let i = 0; i < length; i += 2) {
const key = parameters[i]
let value = parameters[i + 1]
if (typeof value === 'function') {
if (ScriptManager.deferredLoading) {
// 如果值类型是函数,且开启了延时加载参数开关
ScriptManager.pushDeferredParameter(instance, key, value)
continue
}
value = value()
}
instance[key] = value
}
manager.add(instance)
}
}
return manager
}

文档生成时间:2025/7/7 12:07:06