图片多语言组件可用dataID替换不同类的图片字体资源

This commit is contained in:
董刚
2022-03-11 17:14:51 +08:00
parent 7ae5b61456
commit d23d7d3de9
6 changed files with 50 additions and 25 deletions

View File

@@ -2596,7 +2596,7 @@
"__prefab": {
"__id__": 118
},
"path": "image",
"_dataID": "image",
"isRawSize": false,
"_id": ""
},

View File

@@ -227,7 +227,7 @@
"_priority": 1073741824,
"_fov": 45,
"_fovAxis": 0,
"_orthoHeight": 445.57919621749414,
"_orthoHeight": 371.44208037825064,
"_near": 1,
"_far": 2000,
"_color": {

View File

@@ -2,7 +2,7 @@
* @Author: dgflash
* @Date: 2021-07-03 16:13:17
* @LastEditors: dgflash
* @LastEditTime: 2022-02-12 19:05:54
* @LastEditTime: 2022-03-10 17:37:45
*/
import { setDisplayStats, _decorator } from 'cc';
import { DEBUG } from 'cc/env';

View File

@@ -62,7 +62,8 @@ export class LanguageLabel extends Component {
return _string;
}
set language(lang: string) {
/** 更新语言 */
language() {
this._needUpdate = true;
}

View File

@@ -1,3 +1,9 @@
/*
* @Author: dgflash
* @Date: 2021-07-03 16:13:17
* @LastEditors: dgflash
* @LastEditTime: 2022-03-11 17:10:39
*/
import { director, error, JsonAsset, warn } from "cc";
import { resLoader } from "../../common/loader/ResLoader";
import { Logger } from "../../common/log/Logger";
@@ -29,7 +35,7 @@ export class LanguagePack {
* @param lang
*/
public updateLanguage(lang: string) {
let lanjson = resLoader.get(`${this._langjsonPath}/${lang}`, JsonAsset);
let lanjson: any = resLoader.get(`${this._langjsonPath}/${lang}`, JsonAsset);
if (lanjson && lanjson.json) {
LanguageData.data = lanjson.json;
let rootNodes = director.getScene()!.children;
@@ -37,12 +43,12 @@ export class LanguagePack {
// 更新所有的LanguageLabel节点
let languagelabels = rootNodes[i].getComponentsInChildren(LanguageLabel);
for (let j = 0; j < languagelabels.length; j++) {
languagelabels[j].language = lang;
languagelabels[j].language();
}
// 更新所有的LanguageSprite节点
let languagesprites = rootNodes[i].getComponentsInChildren(LanguageSprite);
for (let j = 0; j < languagesprites.length; j++) {
languagesprites[j].language = lang;
languagesprites[j].language();
}
}
}

View File

@@ -1,4 +1,11 @@
import { Component, Size, Sprite, SpriteFrame, UITransform, _decorator } from "cc";
/*
* @Author: dgflash
* @Date: 2021-11-24 15:51:01
* @LastEditors: dgflash
* @LastEditTime: 2022-03-11 17:13:46
*/
import { CCString, Component, Size, Sprite, SpriteFrame, UITransform, _decorator } from "cc";
import { EDITOR } from "cc/env";
import { resLoader } from "../../common/loader/ResLoader";
import { Logger } from "../../common/log/Logger";
import { LanguageData } from "./LanguageData";
@@ -8,10 +15,18 @@ const { ccclass, property, menu } = _decorator;
@ccclass("LanguageSprite")
@menu('ui/language/LanguageSprite')
export class LanguageSprite extends Component {
@property({
tooltip: "资源路径language/texture/内的相对路径)"
})
public path: string = "";
@property({ serializable: true })
private _dataID: string = "";
@property({ type: CCString, serializable: true })
get dataID(): string {
return this._dataID || "";
}
set dataID(value: string) {
this._dataID = value;
if (!EDITOR) {
this.updateSprite();
}
}
@property({
tooltip: "是否设置为图片原始资源大小"
@@ -19,28 +34,31 @@ export class LanguageSprite extends Component {
private isRawSize: boolean = true;
start() {
this.language = LanguageData.current;
this.updateSprite();
}
set language(lang: string) {
this.updateSprite(lang);
/** 更新语言 */
language() {
this.updateSprite();
}
updateSprite(lang: string) {
let spcomp: Sprite = this.getComponent(Sprite)!;
private updateSprite() {
// 获取语言标记
let path = `language/texture/${lang}/${this.path}/spriteFrame`;
let res = resLoader.get(path, SpriteFrame);
let path = `language/texture/${LanguageData.current}/${this.dataID}/spriteFrame`;
let res: SpriteFrame | null = resLoader.get(path, SpriteFrame);
if (!res) {
Logger.erroring("[LanguageSprite] 资源不存在 " + path);
}
spcomp.spriteFrame = res;
else {
let spcomp: Sprite = this.getComponent(Sprite)!;
spcomp.spriteFrame = res;
/** 修改节点为原始图片资源大小 */
if (this.isRawSize) {
//@ts-ignore
let rawSize = res._originalSize as Size;
spcomp.getComponent(UITransform)?.setContentSize(rawSize);
/** 修改节点为原始图片资源大小 */
if (this.isRawSize) {
//@ts-ignore
let rawSize = res._originalSize as Size;
spcomp.getComponent(UITransform)?.setContentSize(rawSize);
}
}
}
}