Laya版本v2.10.0
思路
在场景类读取runtime时, 使用指定的控制类
实现
项目相关类
export class ConstDefine {
public static LOADING_SCENE: string = "scenes/LoadingScene.scene"; // 场景文件路径
}
export class RuntimeConfig {
static init() {
var reg: Function = Laya.ClassUtils.regClass;
reg(ConstDefine.LOADING_SCENE, LoadingSceneCtrl);
}
}
export default class LoadingSceneCtrl extends ui.scenes.LoadingSceneUI {
// ...
}
class Main {
// ...
onConfigLoaded(): void {
// UI加载前初始化, 或使用前单独设置
RuntimeConfig.init();
// 加载IDE指定的场景
GameConfig.startScene && Laya.Scene.open(GameConfig.startScene);
}
}
引擎 laya.core.js 类修改
class Scene extends Sprite {
// ...
static load(url, complete = null, progress = null) {
// ...
var runtime = obj.props.runtime ? obj.props.runtime : obj.type;
/**
原代码:
var clas = ILaya.ClassUtils.getClass(runtime);
*/
// 修改后
var clas = ILaya.ClassUtils.getClass(url);
clas = clas || ILaya.ClassUtils.getClass(runtime);
}
}
结语
- 其他UI类似处理即可;
- 修改 laya.core.js 后, 需要压缩覆盖 min/laya.core.min.js 文件.