添加初始化流程模板中脚本方式使用多语言功能,并完善注释

This commit is contained in:
dgflash
2022-02-05 11:31:40 +08:00
parent cf2a031b6a
commit 8be6b2f02b
18 changed files with 455 additions and 197 deletions

View File

@@ -11,6 +11,9 @@
"netInstableOpen": "Waiting ",
"btn_audio_open1": "Music",
"btn_audio_open2": "Effect",
"loading_load_json": "Load Json",
"loading_load_game": "Load Content",
"loading_load_player": "Get user information",
"role_lv": "Level",
"role_hp": "HP",
"role_power": "Power",

View File

@@ -11,6 +11,9 @@
"netInstableOpen": "等待动画",
"btn_audio_open1": "音乐播放",
"btn_audio_open2": "音效播放",
"loading_load_json": "加载游戏本地数据",
"loading_load_game": "加载游戏内容",
"loading_load_player": "获取用户信息",
"role_lv": "等级",
"role_hp": "生命",
"role_power": "力量",

View File

@@ -27,17 +27,17 @@
"_active": true,
"_components": [
{
"__id__": 36
"__id__": 46
},
{
"__id__": 38
"__id__": 48
},
{
"__id__": 40
"__id__": 50
}
],
"_prefab": {
"__id__": 42
"__id__": 52
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -149,7 +149,7 @@
"node": {
"__id__": 2
},
"_enabled": false,
"_enabled": true,
"__prefab": {
"__id__": 6
},
@@ -164,7 +164,10 @@
"b": 255,
"a": 255
},
"_spriteFrame": null,
"_spriteFrame": {
"__uuid__": "0021cb5a-e4f0-4709-b0b6-5e21875720b7@f9941",
"__expectedType__": "cc.SpriteFrame"
},
"_type": 0,
"_fillType": 0,
"_sizeMode": 1,
@@ -186,9 +189,7 @@
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"root": null,
"asset": {
"__id__": 0
},
@@ -206,29 +207,32 @@
"__id__": 9
},
{
"__id__": 15
"__id__": 19
},
{
"__id__": 25
}
],
"_active": true,
"_components": [
{
"__id__": 25
"__id__": 35
},
{
"__id__": 27
"__id__": 37
},
{
"__id__": 29
"__id__": 39
},
{
"__id__": 31
"__id__": 41
},
{
"__id__": 33
"__id__": 43
}
],
"_prefab": {
"__id__": 35
"__id__": 45
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -260,7 +264,7 @@
},
{
"__type__": "cc.Node",
"_name": "pro_bar",
"_name": "lab_prompt",
"_objFlags": 0,
"_parent": {
"__id__": 8
@@ -273,10 +277,191 @@
},
{
"__id__": 12
},
{
"__id__": 14
},
{
"__id__": 16
}
],
"_prefab": {
"__id__": 14
"__id__": 18
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
"y": 74.13,
"z": 0
},
"_lrot": {
"__type__": "cc.Quat",
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"_lscale": {
"__type__": "cc.Vec3",
"x": 1,
"y": 1,
"z": 1
},
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_id": ""
},
{
"__type__": "cc.UITransform",
"_name": "lab_progress<UITransform>",
"_objFlags": 0,
"node": {
"__id__": 9
},
"_enabled": true,
"__prefab": {
"__id__": 11
},
"_contentSize": {
"__type__": "cc.Size",
"width": 164,
"height": 54.4
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "37WpHB35ZA8KJNfmflUmio"
},
{
"__type__": "cc.Label",
"_name": "lab_progress<Label>",
"_objFlags": 0,
"node": {
"__id__": 9
},
"_enabled": true,
"__prefab": {
"__id__": 13
},
"_visFlags": 0,
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_string": "状态提示",
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 40,
"_fontSize": 40,
"_fontFamily": "Arial",
"_lineHeight": 40,
"_overflow": 0,
"_enableWrapText": true,
"_font": null,
"_isSystemFontUsed": true,
"_isItalic": false,
"_isBold": true,
"_isUnderline": false,
"_underlineHeight": 2,
"_cacheMode": 0,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "18xXPm7ZRGtJOVkw0KWRyI"
},
{
"__type__": "cc.LabelOutline",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 9
},
"_enabled": true,
"__prefab": {
"__id__": 15
},
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_width": 2,
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "bfTjeen/RO8Z25U0XoQYb0"
},
{
"__type__": "545c05XsG9GDJispEGWKvYv",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 9
},
"_enabled": true,
"__prefab": {
"__id__": 17
},
"templateMode": false,
"labelType": "cc.Label",
"watchPath": "*.prompt",
"watchPathArr": [
""
],
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
"fileId": "aaLLLRoNxJM6JIqIOxEbdK"
},
{
"__type__": "cc.PrefabInfo",
"root": null,
"asset": {
"__id__": 0
},
"fileId": "a4Hlk39nNMV7QG9p+cKfSl"
},
{
"__type__": "cc.Node",
"_name": "pro_bar",
"_objFlags": 0,
"_parent": {
"__id__": 8
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 20
},
{
"__id__": 22
}
],
"_prefab": {
"__id__": 24
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -311,11 +496,11 @@
"_name": "Sprite<UITransform>",
"_objFlags": 0,
"node": {
"__id__": 9
"__id__": 19
},
"_enabled": true,
"__prefab": {
"__id__": 11
"__id__": 21
},
"_contentSize": {
"__type__": "cc.Size",
@@ -338,11 +523,11 @@
"_name": "Sprite<Sprite>",
"_objFlags": 0,
"node": {
"__id__": 9
"__id__": 19
},
"_enabled": true,
"__prefab": {
"__id__": 13
"__id__": 23
},
"_visFlags": 0,
"_customMaterial": null,
@@ -380,9 +565,7 @@
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"root": null,
"asset": {
"__id__": 0
},
@@ -399,20 +582,20 @@
"_active": true,
"_components": [
{
"__id__": 16
"__id__": 26
},
{
"__id__": 18
"__id__": 28
},
{
"__id__": 20
"__id__": 30
},
{
"__id__": 22
"__id__": 32
}
],
"_prefab": {
"__id__": 24
"__id__": 34
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -447,11 +630,11 @@
"_name": "lab_progress<UITransform>",
"_objFlags": 0,
"node": {
"__id__": 15
"__id__": 25
},
"_enabled": true,
"__prefab": {
"__id__": 17
"__id__": 27
},
"_contentSize": {
"__type__": "cc.Size",
@@ -474,11 +657,11 @@
"_name": "lab_progress<Label>",
"_objFlags": 0,
"node": {
"__id__": 15
"__id__": 25
},
"_enabled": true,
"__prefab": {
"__id__": 19
"__id__": 29
},
"_visFlags": 0,
"_customMaterial": null,
@@ -518,11 +701,11 @@
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 15
"__id__": 25
},
"_enabled": true,
"__prefab": {
"__id__": 21
"__id__": 31
},
"_color": {
"__type__": "cc.Color",
@@ -543,11 +726,11 @@
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 15
"__id__": 25
},
"_enabled": true,
"__prefab": {
"__id__": 23
"__id__": 33
},
"templateMode": true,
"labelType": "cc.Label",
@@ -563,9 +746,7 @@
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"root": null,
"asset": {
"__id__": 0
},
@@ -580,7 +761,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 26
"__id__": 36
},
"_contentSize": {
"__type__": "cc.Size",
@@ -607,7 +788,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 28
"__id__": 38
},
"_visFlags": 0,
"_customMaterial": null,
@@ -652,10 +833,10 @@
},
"_enabled": true,
"__prefab": {
"__id__": 30
"__id__": 40
},
"_barSprite": {
"__id__": 12
"__id__": 22
},
"_mode": 2,
"_totalLength": 1,
@@ -676,7 +857,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 32
"__id__": 42
},
"controller": false,
"watchPath": "",
@@ -703,7 +884,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 34
"__id__": 44
},
"_alignFlags": 4,
"_target": null,
@@ -731,9 +912,7 @@
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"root": null,
"asset": {
"__id__": 0
},
@@ -748,7 +927,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 37
"__id__": 47
},
"_contentSize": {
"__type__": "cc.Size",
@@ -775,7 +954,7 @@
},
"_enabled": true,
"__prefab": {
"__id__": 39
"__id__": 49
},
"_alignFlags": 45,
"_target": null,
@@ -810,9 +989,9 @@
},
"_enabled": true,
"__prefab": {
"__id__": 41
"__id__": 51
},
"_id": "daCFe+B0BOeZtHLHqBYu9Z"
"_id": ""
},
{
"__type__": "cc.CompPrefabInfo",
@@ -820,9 +999,7 @@
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"root": null,
"asset": {
"__id__": 0
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

View File

@@ -0,0 +1,75 @@
{
"ver": "1.0.22",
"importer": "image",
"imported": true,
"uuid": "0021cb5a-e4f0-4709-b0b6-5e21875720b7",
"files": [
".png",
".json"
],
"subMetas": {
"6c48a": {
"importer": "texture",
"uuid": "0021cb5a-e4f0-4709-b0b6-5e21875720b7@6c48a",
"displayName": "bg",
"id": "6c48a",
"name": "texture",
"ver": "1.0.21",
"imported": true,
"files": [
".json"
],
"subMetas": {},
"userData": {
"wrapModeS": "clamp-to-edge",
"wrapModeT": "clamp-to-edge",
"minfilter": "linear",
"magfilter": "linear",
"mipfilter": "none",
"premultiplyAlpha": false,
"anisotropy": 1,
"isUuid": true,
"imageUuidOrDatabaseUri": "0021cb5a-e4f0-4709-b0b6-5e21875720b7"
}
},
"f9941": {
"importer": "sprite-frame",
"uuid": "0021cb5a-e4f0-4709-b0b6-5e21875720b7@f9941",
"displayName": "bg",
"id": "f9941",
"name": "spriteFrame",
"ver": "1.0.9",
"imported": true,
"files": [
".json"
],
"subMetas": {},
"userData": {
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 1600,
"height": 720,
"rawWidth": 1600,
"rawHeight": 720,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"isUuid": true,
"imageUuidOrDatabaseUri": "0021cb5a-e4f0-4709-b0b6-5e21875720b7@6c48a",
"atlasUuid": "",
"packable": true
}
}
},
"userData": {
"type": "sprite-frame",
"redirect": "0021cb5a-e4f0-4709-b0b6-5e21875720b7@f9941",
"hasAlpha": false
}
}

View File

@@ -9,7 +9,7 @@ import { Root } from "./Root";
export class engine {
/** 多语言模块 */
public static i18n: LanguageManager;
public static language: LanguageManager;
/** 游戏时间管理 */
public static timer: TimerManager;
/** 游戏音乐管理 */
@@ -25,21 +25,11 @@ export class engine {
/** 在Root.ts中初始化引导模块 */
private static init(root: Root) {
engine.i18n = new LanguageManager()
engine.language = new LanguageManager()
engine.timer = new TimerManager(root);
engine.audio = AudioManager.instance;
engine.http = new HttpRequest();
engine.gui = new LayerManager(root.gui!);
engine.game = root.addComponent(GameManager)!;
}
/** 修改引擎全局游戏速度 k-cocos.js */
public static get speed(): number {
// @ts-ignore
return cc.kGetSpeed();
}
public static set speed(value: number) {
// @ts-ignore
cc.kSetSpeed(value);
}
}

View File

@@ -16,27 +16,27 @@ export class LanguageManager extends EventDispatcher {
/** Label修改之前的回调 */
public beforeChangeLabel: ((comp: LanguageLabel, content: string, dataID: string) => void) | null = null;
private _currentLang: string = ""; // 当前语言
private _supportLanguages: Array<string> = ["zh", "en", "tr"]; // 支持的语言
private _current: string = ""; // 当前语言
private _support: Array<string> = ["zh", "en", "tr"]; // 支持的语言
private _languagePack: LanguagePack = new LanguagePack(); // 语言包
/** 设置多语言系统支持哪些语种 */
public set supportLanguages(supportLanguages: Array<string>) {
this._supportLanguages = supportLanguages;
this._support = supportLanguages;
}
/**
* 获取当前语种
*/
public get currentLanguage(): string {
return this._currentLang;
public get current(): string {
return this._current;
}
/**
* 获取支持的多语种数组
*/
public get languages(): string[] {
return this._supportLanguages;
return this._support;
}
public isExist(lang: string): boolean {
@@ -48,7 +48,7 @@ export class LanguageManager extends EventDispatcher {
*/
public getNextLang(): string {
let supportLangs = this.languages;
let index = supportLangs.indexOf(this._currentLang);
let index = supportLangs.indexOf(this._current);
let newLanguage = supportLangs[(index + 1) % supportLangs.length];
return newLanguage;
}
@@ -67,7 +67,7 @@ export class LanguageManager extends EventDispatcher {
warn("当前不支持该语种" + language + " 将自动切换到 zh 语种!");
language = DEFAULT_LANGUAGE;
}
if (language === this._currentLang) {
if (language === this._current) {
callback(false);
return;
}
@@ -80,7 +80,7 @@ export class LanguageManager extends EventDispatcher {
}
Logger.logConfig(`当前语言为【${language}`);
this._currentLang = language;
this._current = language;
this._languagePack.updateLanguage(language);
this.dispatchEvent(LanguageEvent.CHANGE, lang);
callback(true);

View File

@@ -49,9 +49,9 @@ export class LanguageLabel extends Component {
}
get string(): string {
let _string = engine.i18n.getLangByID(this._dataID);
if (engine.i18n.beforeChangeLabel) {
engine.i18n.beforeChangeLabel(this, _string, this._dataID);
let _string = engine.language.getLangByID(this._dataID);
if (engine.language.beforeChangeLabel) {
engine.language.beforeChangeLabel(this, _string, this._dataID);
}
if (_string && this._params.length > 0) {
this._params.forEach((item: LangLabelParamsItem) => {
@@ -125,14 +125,14 @@ export class LanguageLabel extends Component {
if (!this._dataID) {
break;
}
let spcomp = this.getComponent(Label);
if (!spcomp) {
warn("[LanguageLabel], 该节点没有cc.Label组件");
break;
}
spcomp.fontFamily = this.getLabelFont(engine.i18n.currentLanguage);
spcomp.fontFamily = this.getLabelFont(engine.language.current);
spcomp.string = this.string;
}
while (false);

View File

@@ -1,7 +1,7 @@
import { Component, Size, Sprite, SpriteFrame, UITransform, _decorator } from "cc";
import { engine } from "../../Engine";
import { resLoader } from "../../common/loader/ResLoader";
import { Logger } from "../../common/log/Logger";
import { engine } from "../../Engine";
const { ccclass, property, menu } = _decorator;
@@ -19,7 +19,7 @@ export class LanguageSprite extends Component {
private isRawSize: boolean = true;
start() {
this.language = engine.i18n.currentLanguage;
this.language = engine.language.current;
}
set language(lang: string) {

View File

@@ -1,22 +0,0 @@
/** 引擎扩展 */
(function (global) {
'use strict';
var cc = global.cc;
// 游戏速率
cc.director._kSpeed = 1;
var _originCalculateDeltaTime = cc.Director.prototype.calculateDeltaTime;
cc.director.calculateDeltaTime = function (now) {
_originCalculateDeltaTime.call(this, now);
this._deltaTime *= this._kSpeed;
}
/** 全局游戏动画数度设置 */
cc.kSetSpeed = function (speed) {
cc.director._kSpeed = speed;
}
cc.kGetSpeed = function () {
return cc.director._kSpeed;
}
})(window)

View File

@@ -1,19 +0,0 @@
{
"ver": "4.0.23",
"importer": "javascript",
"imported": true,
"uuid": "8fb0bbdd-75fa-41fc-b2d4-20fd7d45f582",
"files": [
".js"
],
"subMetas": {},
"userData": {
"moduleId": "project:///assets/libs/k-cocos.js",
"importerSettings": 4,
"isPlugin": true,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"dependencies": []
}
}

View File

@@ -5,8 +5,9 @@
* @LastEditTime: 2022-01-24 15:04:19
*/
import { Message } from "../../core/common/event/MessageManager";
import { ecs } from "../../core/libs/ECS";
import { netChannel } from "../common/net/NetChannelManager";
import { GameEvent } from "../common/config/GameEvent";
import { AccountNetDataComp } from "./bll/AccountNetData";
import { AccountModelComp } from "./model/AccountModelComp";
@@ -26,15 +27,43 @@ export class Account extends ecs.Entity {
constructor() {
super();
this.addComponents<ecs.Comp>(AccountModelComp);
this.addEvent();
}
destroy(isClearData?: boolean): void {
this.removeEvent();
super.destroy(isClearData);
}
/** 添加全局消息事件 */
private addEvent() {
Message.on(GameEvent.GameServerConnected, this.onHandler, this);
}
/** 移除全局消息事件 */
private removeEvent() {
Message.off(GameEvent.GameServerConnected, this.onHandler, this);
}
private onHandler(event: string, args: any) {
switch (event) {
case GameEvent.GameServerConnected:
this.requestLoadPlayer();
break;
}
}
/** 连接游戏服务器 */
connect() {
netChannel.gameCreate();
netChannel.gameConnect();
// netChannel.gameCreate();
// netChannel.gameConnect();
// 无网状态下测试代码,有网络时会通过触发网络连接成功事件对接后续流程
this.requestLoadPlayer();
}
// 登录游戏
/** 获取玩家信息 */
requestLoadPlayer() {
this.add(AccountNetDataComp);
}

View File

@@ -14,7 +14,7 @@ import { Role } from "../../role/Role";
import { Account } from "../Account";
import { AccountModelComp } from "../model/AccountModelComp";
/** 帐号网络数据请求 */
/** 请求玩家游戏数据 */
@ecs.register('AccountNetData')
export class AccountNetDataComp extends ecs.Comp {
reset() { }
@@ -44,30 +44,46 @@ export class AccountNetDataSystem extends ecs.ComblockSystem implements ecs.IEnt
// // 请求登录游戏获取角色数据
// netChannel.game.req("LoginAction", "loadPlayer", params, onComplete);
/** 离线测试代码 */
var role = new Role();
role.RoleModel.id = 1;
role.RoleModel.name = "测试角色";
role.RoleLevel.lv = 1; // + 5 hp
role.RoleJobModel.id = 1; // + 2 power, + 10 ad
e.AccountModel.role = role;
// 角色基础属性绑定到界面上显示
VM.add(role.RoleModel.vm, "role");
// 角色信息界面显示对象
var role_attr = ViewUtil.createPrefabNode("game/battle/role_attr");
role_attr.parent = engine.gui.root;
// 角色动画显示对象
role.load();
role.RoleView.node.parent = engine.gui.root;
role.RoleView.node.setPosition(0, -200, 0);
this.test(e);
e.remove(AccountNetDataComp);
}
}
/** 离线测试代码(自定义逻辑) */
private test(e: Account) {
var role = new Role();
// 角色数据
role.RoleModel.id = 1;
role.RoleModel.name = "测试角色";
// 角色初始战斗属性
role.RoleBaseModel.power = 10;
role.RoleBaseModel.agile = 10;
role.RoleBaseModel.physical = 10;
// 角色等级数据
role.RoleLevel.lv = 1; // + 5 hp
// 角色职业数据
role.RoleJobModel.id = 1; // + 2 power, + 10 ad
// 角色基础属性绑定到界面上显示
VM.add(role.RoleModel.vm, "role");
// 角色信息界面显示对象
var role_attr = ViewUtil.createPrefabNode("game/battle/role_attr");
role_attr.parent = engine.gui.root;
// 角色动画显示对象
role.load();
role.RoleView.node.parent = engine.gui.root;
role.RoleView.node.setPosition(0, -200, 0);
e.AccountModel.role = role;
}
/** 设置本地存储的用户标识 */
setLocalStorage(uid: number) {
SqlUtil.setUser(uid);

View File

@@ -6,8 +6,8 @@
/** 网络配置 */
class NetConfig {
public gameIp !: string;
public gamePort !: string;
public gameIp: string = "192.168.1.150";
public gamePort: string = "9587";
public dbid!: number;
public sdkUid!: string;
public serverId!: number;

View File

@@ -15,11 +15,11 @@ export class NetGameTips implements INetworkTips {
connectTips(isShow: boolean): void {
if (isShow) {
Logger.logNet("游戏服务器正在连接");
// tips.netInstableOpen();
tips.netInstableOpen();
}
else {
Logger.logNet("游戏服务器连接成功");
// tips.netInstableClose();
tips.netInstableClose();
Message.dispatchEvent(GameEvent.GameServerConnected);
}
}

View File

@@ -49,15 +49,15 @@ export class Demo extends Component {
/** 多语言切换 */
private btn_language(event: EventTouch, data: any) {
console.log(engine.i18n.getLangByID("notify_show"));
console.log(engine.language.getLangByID("notify_show"));
if (this.lang == false) {
this.lang = true;
engine.i18n.setLanguage("zh", () => { });
engine.language.setLanguage("zh", () => { });
}
else {
this.lang = false;
engine.i18n.setLanguage("en", () => { });
engine.language.setLanguage("en", () => { });
}
}

View File

@@ -10,18 +10,14 @@ import { AsyncQueue, NextFunction } from "../../core/common/queue/AsyncQueue";
import { engine } from "../../core/Engine";
import { UICallbacks } from "../../core/gui/layer/Defines";
import { ecs } from "../../core/libs/ECS";
import { JsonUtil } from "../../core/utils/JsonUtil";
import { config } from "../common/config/Config";
import { UIID } from "../common/config/GameUIConfig";
import { RoleJobModelComp } from "../role/model/RoleJobModelComp";
import { RoleTableLevelUp } from "../role/model/RoleTableLevelUp";
import { LoadingViewComp } from "./view/LoadingViewComp";
/**
* 游戏进入初始化模块
* 1、热更新
* 2、加载默认资源
* 3、转到帐号模块
*/
export class Initialize extends ecs.Entity {
LoadingView!: LoadingViewComp;
@@ -39,19 +35,24 @@ export class Initialize extends ecs.Entity {
// 加载多语言包
this.loadLanguage(queue);
// 加载TTF字库可选项
this.loadFont(queue);
// 加载公共资源
this.loadCommon(queue);
// 加载自定义静态表
// 加载自定义资源
this.loadCustom(queue);
// 加载游戏主界面资源
// 加载游戏内容加载进度提示界面
this.onComplete(queue);
queue.play();
}
/** 加载化语言包 */
/** 加载自定义内容(可选) */
private loadCustom(queue: AsyncQueue) {
queue.push(async (next: NextFunction, params: any, args: any) => {
resLoader.load("language/font/" + engine.language.current, next);
});
}
/** 加载化语言包(可选) */
private loadLanguage(queue: AsyncQueue) {
queue.push((next: NextFunction, params: any, args: any) => {
// 设置默认语言
@@ -63,35 +64,20 @@ export class Initialize extends ecs.Entity {
}
// 设置语言包路径
engine.i18n.setAssetsPath(config.game.languagePathJson, config.game.languagePathTexture);
engine.language.setAssetsPath(config.game.languagePathJson, config.game.languagePathTexture);
// 加载语言包资源
engine.i18n.setLanguage(lan!, next);
engine.language.setLanguage(lan!, next);
});
}
/** 加载TTF字库可选项 */
private loadFont(queue: AsyncQueue) {
queue.push((next: NextFunction, params: any, args: any) => {
resLoader.load("language/font/" + engine.i18n.currentLanguage, next);
});
}
/** 加载公共资源(公用提示、窗口等自定义文件体积交小的资源) */
/** 加载公共资源(必备 */
private loadCommon(queue: AsyncQueue) {
queue.push((next: NextFunction, params: any, args: any) => {
resLoader.loadDir("common", next);
});
}
/** 加载自定义静态表 */
private loadCustom(queue: AsyncQueue) {
queue.push(async (next: NextFunction, params: any, args: any) => {
next();
});
}
/** 加载完成进入游戏内容加载界面 */
private onComplete(queue: AsyncQueue) {
queue.complete = () => {
@@ -101,6 +87,8 @@ export class Initialize extends ecs.Entity {
this.add(comp);
}
};
// 界面管理 - 打开游戏内容资源加载进度提示界面
engine.gui.open(UIID.Loading, null, uic);
};
}

View File

@@ -4,10 +4,8 @@
* @LastEditors: dgflash
* @LastEditTime: 2022-01-24 16:12:49
*/
import { _decorator } from "cc";
import { resLoader } from "../../../core/common/loader/ResLoader";
import { Logger } from "../../../core/common/log/Logger";
import { engine } from "../../../core/Engine";
import { ecs } from "../../../core/libs/ECS";
import { JsonUtil } from "../../../core/utils/JsonUtil";
@@ -20,29 +18,41 @@ import { RoleTableLevelUp } from "../../role/model/RoleTableLevelUp";
const { ccclass, property } = _decorator;
/** 游戏资源加载 */
@ccclass('LoadingViewComp')
@ecs.register('LoadingView', false)
export class LoadingViewComp extends CCVMParentComp {
protected data: any = {
/** VM 组件绑定数据 */
data: any = {
/** 加载资源当前进度 */
finished: 0,
/** 加载资源最大进度 */
total: 0,
progress: ""
/** 加载资源进度比例值 */
progress: "",
/** 加载流程中提示文本 */
prompt: ""
};
private progress: number = 0;
reset(): void {
// 获取用户信息的多语言提示文本
this.data.prompt = engine.language.getLangByID("loading_load_player");
// 关闭加载界面
engine.gui.remove(UIID.Loading);
engine.gui.open(UIID.Demo);
// 进入游戏主界面
var module = ecs.getSingleton(SingletonModuleComp);
module.account = new Account();
module.account.requestLoadPlayer();
// 释放加载界面资源
resLoader.releaseDir("loading");
Logger.logView("释放loading资源");
// 初始化角色模块
var module = ecs.getSingleton(SingletonModuleComp);
module.account = new Account();
module.account.connect();
// 打开DEMO界面
engine.gui.open(UIID.Demo);
}
start() {
@@ -56,8 +66,11 @@ export class LoadingViewComp extends CCVMParentComp {
this.loadGameRes();
}
/** 加载游戏本地JSON数据 */
/** 加载游戏本地JSON数据(自定义内容) */
private loadLocalJson() {
// 加载游戏本地JSON数据的多语言提示文本
this.data.prompt = engine.language.getLangByID("loading_load_json");
return new Promise(async (resolve, reject) => {
await JsonUtil.loadAsync(RoleJobModelComp.TableName);
await JsonUtil.loadAsync(RoleTableLevelUp.TableName);
@@ -65,11 +78,15 @@ export class LoadingViewComp extends CCVMParentComp {
});
}
/** 加载游戏预制、纹理等资源 */
/** 加载初始游戏内容资源 */
private loadGameRes() {
// 加载初始游戏内容资源的多语言提示文本
this.data.prompt = engine.language.getLangByID("loading_load_game");
resLoader.loadDir("game", this.onProgressCallback.bind(this), this.onCompleteCallback.bind(this));
}
/** 加载进度事件 */
private onProgressCallback(finished: number, total: number, item: any) {
this.data.finished = finished;
this.data.total = total;
@@ -81,6 +98,7 @@ export class LoadingViewComp extends CCVMParentComp {
}
}
/** 加载完成事件 */
private onCompleteCallback() {
this.ent.remove(LoadingViewComp);
}