Organizations

14 results for Godot
  • 事件信号推送 无论什么游戏引擎都有类似的跨场景推送要求, 本质上就是不同节点的事件监听: Unity3D的A预制件如何通知B预制件? Godot的A场景对象如何通知到B场景? …… 这里说个最简单的场景应用: 玩家通过点击商人购物的场景, 需要同步更新玩家GUI的金额和背包内部物品信息, 内部蕴含的就是这种不同场景( 商品界面GUI|玩家界面GUI|背包界面GUI )的多处同步更新. 甚至大型游戏需要细致到点击之后同步不同节点播放多个复杂动画效果, 让游戏效果更加绚丽 这里制作个简单样例: Merchant 是商店购买界面 Status 是玩家信息状态界面 Player 是详细购买信息提示界面 可以看到以上都是分布三个节点, Merchant 具体负责触发购买事件, 之后需要让 Status 和 Player 获取到购买信息. 具体难点就是 Button 信号事件全在 Merchant 身上, 最简单就是 Shop 根节点挂载具体处理脚本, 之后把由他通知其他所有节点. 但是这种父节点通知下属节点方式是有很大问题的, 因为 Merchant 所有 Button 信号触发事件必须绑定到最上层的 Shop 父节点; 这种绑定锁死上下级关系导致节点千万不能随意变动, 因为按键信号绑定需要类型 ../../Shop.gd 反向绑定节点, 随意变动上下级关系会导致直接事件失效, 而且场景复用频繁也会因为这样没办法绑定指定触发事件. 观察者模式 这是常见的设计模式, 采用全局唯一管理器挂载在进程中等待订阅和推送: Subscrib: 订阅端, 初始化的时候绑定监听调用服务函数方法 Publish: 推送端, 运行时推送数据给订阅类对象 这里伪代码编写: # ============================================================= # 假设商人对象等待触发支付 # ============================================================= extends Node class_name Merchant # 初始化的时候商人需要订阅结算事件, 因为其无法获取是否能够完成支付 func _init(): PubSub.
    Godot 游戏开发 Created Sun, 25 Feb 2024 01:54:48 +0800
  • 字体集成 注意开发游戏拉取出来的字体默认采用本地PC|手机当中保存的地区字体合集, 如果有的地区没有默认集成该字体则会出现 ‘口口’ 这样占位字体, 所以如果要游戏支持全球通用则必须要在开发中先在项目集成构建自己的游戏字体. 注意: 字体是有版权问题, 不要等到最后接收到律师函要求大量赔偿的时候才留意到这个问题 目前支持中文的开源免费且可以商用字体有以下: 阿里巴巴普惠体, 支持178个语种, 支持不同地区语种广泛 思源字体, 该字体授权最宽松可以任意修改打包再传播, 托管在Github 查询字体版权可以通过 WhatFontIs 查询是否支持商业免费. 这里采用阿里惠普体导入游戏当中测试 Godot 构建默认字体 需要注意新版本 Godot 默认会默认切换本地字体字符集, 其他电脑不含相同字体会导致在另外电脑字体错误. 另外还需要注意 Godot3 和 Godot4 版本字体引入方式不一样, Godot3是采用 FontTheme 方式而 Godot4 则直接引入调用即可. 最容易看出效果就是利用 Web 导出模板启动样例, 利用 Web 启动的默认采用自定义的默认字符集, 也就是构建 H5 游戏.
    Godot 游戏开发 Created Sat, 24 Feb 2024 21:28:07 +0800
  • Godot的WebSocket 用于做H5数据转发传输, 这里采用 Godot 内部脚本生成工具类 ( websocket_manager.gd ) : extends Node # 会话句柄 var socket:WebSocketPeer = WebSocketPeer.new() # 确认是否初始化开放过 var _opened:bool = false # 监听信号事件 signal on_connect signal on_open signal on_closing signal on_closed signal on_message # 初始化事件 func _ready(): stop() set_physics_process(false) # 启动执行 func start(): _opened = false set_process(true) # 停止执行 func stop(): _opened = false set_process(false) # 链接WebSocket服务 func connect_to_url(url:String,tls_client_options: TLSOptions = null)->Error: # 这里默认采用非安全,正式环境最后配置好安全证书 if tls_client_options == null: tls_client_options = TLSOptions.
    Godot Created Sat, 24 Feb 2024 18:12:17 +0800
  • Godot基础动画 这里采用 Godot4 版本的兼容来做动画处理, 测试当中新版本的 4.1rc 好像 Vulkan 有问题所以不建议采用 Forward+ 模式. 后续 Godot4 比较成熟的时候可以采用, 但是就目前版本还是很不成熟 这里先做下常见的游戏开头动画渲染, 先添加部件: Control(Main): 组件主要根节点 ColorRect(Background): 黑幕背景, 进入游戏之前的背景场景. AnimationPlayer(MainPlayer): 动画播放器, 主要是的动画播放节点 Sprite2D(Icon): 厂商支持等标志, 用于开头展示主要做动画要素 这里就是最后的节点内容, 很简单的载入动画; 最后的成品就像类似下面效果: 动画编辑 这里先选中 AnimationPlayer 部件, 之后进入节点动画处理: 动画编辑器需要先新建动画帧部件处理: 之后就可以点击左下的 添加轨道 设置指定的作用节点轨道, 右下 时钟 旁边数值则是动画长度(秒), 同时还是有 A+ 标志代表启动之后直接播放: 添加轨道的时候可以选中大量属性处理, 这里按照你想表现的动画效果直接添加属性即可, 也有其他类型的动画轨道具体可以自己官方文档研究, 这里仅仅做了下Logo旋转弹跳隐藏效果. 当开头屏幕动画完成就可以切换到其他关卡上, 从而加载登录首页的 scene 之中.
    Godot Created Tue, 14 Nov 2023 00:29:49 +0800
Previous