create 创建脚本管理器(使用脚本数据)
create
类型: MethodDeclaration
所属类: ScriptManager
定义位置: event.ts
描述
创建脚本管理器(使用脚本数据)
参数 owner: 脚本宿主对象
参数 data: 脚本数据列表
返回值:生成的脚本管理器
参数
| 参数名 | 类型 | 描述 | 默认值 | 
|---|---|---|---|
| owner | object | - | - | 
| data | Array<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/21 20:53:39