当前位置: 首页 > news >正文

那除了ui组件像角色大小这种 不用随着分辨率改还是啥

对的!游戏角色、僵尸、场景物体这些应该保持固定大小,不要随分辨率改变!

核心原则:🎯
UI元素:自适应分辨率(血条、按钮、任务提示)
游戏实体:固定大小(角色、僵尸、道具、建筑)

  1. 为什么游戏实体要固定大小? 🤔
    TYPESCRIPT
    @ccclass(‘GameEntitySettings’)
    export class GameEntitySettings extends Component {

    onLoad() {
    // 角色和游戏实体应该保持设计时的大小
    this.setupFixedSizeEntities();
    }

    private setupFixedSizeEntities() {
    // 这些节点的scale保持(1,1,1)或设计时的大小
    const fixedSizeNodes = [
    this.playerNode, // 角色
    this.zombieNodes, // 僵尸
    this.propNodes, // 道具
    this.buildingsNodes // 建筑
    ];

     fixedSizeNodes.forEach(node => {// 保持原始设计大小,不要加Widget组件!node.scale = new Vec3(1, 1, 1);});
    

    }
    }

  2. 实现方式:两个Camera系统 📷
    TYPESCRIPT
    @ccclass(‘DualCameraSystem’)
    export class DualCameraSystem extends Component {

    @property(Camera)
    gameCamera: Camera = null!; // 游戏相机 - 固定

    @property(Camera)
    uiCamera: Camera = null!; // UI相机 - 自适应

    onLoad() {
    this.setupGameCamera();
    this.setupUICamera();
    }

    private setupGameCamera() {
    // 游戏相机:固定Ortho Height,实体大小不变
    this.gameCamera.orthoHeight = 5; // 游戏单位,不是像素

     // 游戏实体都放在这个相机下// 它们的size是游戏单位,不是屏幕像素
    

    }

    private setupUICamera() {
    // UI相机:自适应分辨率
    this.uiCamera.orthoHeight = 360; // 针对720p设计

     // UI元素都放在这个相机下,加Widget组件
    

    }
    }

  3. 节点结构建议 🏗️
    TEXT
    Scene
    ├── GameCamera (固定 Ortho Height)
    │ ├── Player (固定大小)
    │ ├── Zombies (固定大小)
    │ ├── Props (固定大小)
    │ └── Environment (固定大小)

    └── UICamera (自适应 Ortho Height)
    ├── HealthBar (加Widget)
    ├── SurfboardQuest (加Widget)
    ├── MountDisplay (加Widget)
    └── Buttons (加Widget)

  4. 在不同分辨率下的表现 📱
    720p手机:
    TEXT
    游戏画面:角色正常大小,视野合适
    UI界面:血条、任务栏正常显示
    1080p手机:
    TEXT
    游戏画面:角色大小不变,能看到更多视野
    UI界面:血条、任务栏自动调整位置
    超宽屏手机:
    TEXT
    游戏画面:角色大小不变,两侧看到更多场景
    UI界面:血条靠左,任务栏靠右,自动避让

  5. 具体代码实现 🚀
    TYPESCRIPT
    @ccclass(‘EntitySizeManager’)
    export class EntitySizeManager extends Component {

    // 这些预设的大小是游戏单位,不是像素!
    private entitySizes = {
    PLAYER: { width: 1, height: 1.5 }, // 游戏单位
    ZOMBIE: { width: 0.8, height: 1.3 }, // 游戏单位
    SUNSCREEN: { width: 0.3, height: 0.3 } // 游戏单位
    };

    setupPlayerSize() {
    // 玩家角色固定大小
    this.playerNode.scale = new Vec3(1, 1, 1);

     // 如果用Sprite,设置合适的Pixels Per Unitconst sprite = this.playerNode.getComponent(Sprite);if (sprite) {// 假设角色图片是64x96像素,我们希望显示为1x1.5游戏单位// 那么Pixels Per Unit应该设置为64}
    

    }

    // 确保游戏实体不受屏幕分辨率影响
    update(deltaTime: number) {
    // 游戏实体的更新逻辑,不涉及屏幕适配
    this.updateGameEntities();
    }
    }

  6. 配置示例:角色和UI的不同处理 🎮
    角色配置(固定):
    TYPESCRIPT
    // Player.ts - 不加Widget,固定scale
    @ccclass(‘Player’)
    export class Player extends Component {
    onLoad() {
    this.node.scale = new Vec3(1, 1, 1); // 固定大小
    // 不要加Widget组件!
    }
    }
    UI配置(自适应):
    TYPESCRIPT
    // HealthBar.ts - 加Widget,自适应
    @ccclass(‘HealthBar’)
    export class HealthBar extends Component {
    onLoad() {
    let widget = this.node.getComponent(Widget);
    if (!widget) {
    widget = this.node.addComponent(Widget);
    }
    widget.isAlignTop = true;
    widget.isAlignLeft = true;
    widget.top = 20;
    widget.left = 20;
    }
    }

  7. 测试建议 🔍
    在编辑器中测试时:

切换不同分辨率预览:UI应该自适应,游戏实体大小不变
屏幕旋转测试:横竖屏切换时,UI重新布局,游戏内容缩放
总结:
记住这个法则:

🎮 游戏玩法的东西 → 固定大小(角色、敌人、道具)
📱 界面显示的东西 → 自适应(血条、按钮、提示)
这样玩家在不同设备上都能获得一致的游戏体验! 🚀

tokens used: 88738, model: DeepSeek API (deepseek-chat)

http://www.dtcms.com/a/534225.html

相关文章:

  • 做一个网站设计要多少钱沈阳网络平台推广公司
  • SCSegamba:用于结构裂缝分割的轻量级结构感知视觉Mamba网络
  • 多个网站域名 是新增接入东莞市建网站制作方案
  • 网站搜索防止攻击wordpress中文标题转换拼音插件
  • WordPress首页站内搜索个人简历ppt模板免费
  • 国外网站dns网站开发后端 书
  • 网站做cpa赚钱吗邯郸招工信息网
  • Windows本地部署3DGS
  • 二手交易网站开发方式类似于拼多多的网站怎么做
  • 数据产品——聊一聊数据埋点体系
  • 辽宁建设工程信息网直接发包工程seo做的比较牛的公司
  • 自定义网站建站公司安阳市网站建设
  • 二级院系网站建设情况金融网站建设公司排名
  • 再谈Socket编程中阻塞/非阻塞模式
  • AI Agent的未来之争:任务规划,该由人主导还是AI自主?
  • 南京建设银行网站西安网站群建设
  • 免费做抽奖的h5网站网站设计多少钱市场价
  • 做网站最好的软件如何做电影网站
  • 虚拟主机如何分配网站网站做收录
  • 互动网站如何做app制作公司排行榜
  • 做网站的股哥安康网站设计
  • 企业网站备案名称要求物流信息网站有哪些
  • 网站开发培训网站旅行志 wordpress
  • 购物网站详细设计在网站上做远程教育系统多少钱
  • 教育类门户网站长沙网上商城
  • 网站开发能进无形资产吗深圳网站建设交易
  • 沧州市建设局网站做网站美工要学什么
  • Acrobat js 数组操作与 splice 方法解决动态表单字段重复值问题
  • 用个人免费空间快速建立个人网站后方平台没有网站流量怎么办
  • 河北省网站备案步骤宣讲家网站做四讲四有模范