import { _decorator, Component, view, screen, Size, size, ResolutionPolicy } from 'cc'; const { ccclass, property } = _decorator; const CHECK_INTERVAL = 0.1; @ccclass('tgxResolutionAutoFit') export class ResolutionAutoFit extends Component { private _oldSize: Size = size(); start() { this.adjustResolutionPolicy(); } private lastCheckTime = 0; update(deltaTime: number) { this.lastCheckTime += deltaTime; if (this.lastCheckTime < CHECK_INTERVAL) { return; } this.lastCheckTime = 0; this.adjustResolutionPolicy(); } adjustResolutionPolicy() { let winSize = screen.windowSize; if (!this._oldSize.equals(winSize)) { let ratio = winSize.width / winSize.height; let drs = view.getDesignResolutionSize(); let drsRatio = drs.width / drs.height; if (ratio > drsRatio) { //wider than desgin. fixed height view.setResolutionPolicy(ResolutionPolicy.FIXED_HEIGHT); } else { // view.setResolutionPolicy(ResolutionPolicy.FIXED_WIDTH); } this._oldSize.set(winSize); } } }