
文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载本篇指南围绕 Godot 官方文档中ResourceImporterBitMap类参考展开系统讲解 BitMap二维布尔值数组资源的导入机制、create_from与threshold两个核心导入参数的工作原理以及如何将图片导入为 BitMap 后作为TextureButton/TouchScreenButton的点击遮罩使用。读完本文你将掌握在编辑器 Import 面板中配置 BitMap 导入、在脚本中查询与生成位图数据以及结合BitMap类方法完成形态学处理与多边形提取的完整实战方案。一、ResourceImporterBitMap 在 Godot 资源管线中的定位Godot 引擎在导入外部素材时会把各类资源统一交给对应的导入器Importer处理BitMap 资源的导入器即ResourceImporterBitMap。从类继承关系看见 class_resourceimporterbitmap.rstResourceImporterBitMap ResourceImporter RefCounted Object其基类ResourceImporter是 Godot 全部资源导入器的基类继承它的导入器还包括ResourceImporterImage、ResourceImporterTexture、ResourceImporterScene、ResourceImporterWAV等十余种见 class_resourceimporter.rst。官方文档对ResourceImporterBitMap的作用定义非常明确Imports aBitMapresource (2D array of boolean values).也就是说它的职责是把一张普通图片转换为BitMap资源——一个每个元素只占 1 bit 的二维布尔矩阵用于高效存储二进制掩码数据见 class_bitmap.rst。需要特别强调的是BitMap 与 Texture2D 有本质区别Texture2D存储在显存中用于 2D/3D 节点上的直接渲染显示BitMap是一种 1-bit 单色资源无法直接显示在任何 2D 或 3D 节点上但像素值可以通过脚本使用get_bit()查询见 tutorials/assets_pipeline/importing_images.rst 中 Changing import type 一节。BitMap 的典型用途ResourceImporterBitMap生成的BitMap资源最典型的应用场景是作为点击遮罩click maskTextureButton.texture_click_mask纯黑白的BitMap图像用于点击检测。遮罩上白色像素代表按钮的可点击区域可借此制作任意曲线/异形形状的按钮见 class_texturebutton.rst 中texture_click_mask属性TouchScreenButton.bitmask触屏按钮的位图遮罩用法相同见 class_touchscreenbutton.rst 中bitmask属性。这意味着对于圆形、星形、不规则图案等非矩形交互区域通过 BitMap 遮罩可以做到所见即所点让点击判定精确到像素级别。二、两个核心导入属性create_from 与 thresholdResourceImporterBitMap的全部导入选项由以下两个属性构成它们共同决定了图片如何被转成布尔位图属性类型默认值作用create_fromint0指定生成位图的数据来源亮度模式或 Alpha 通道模式thresholdfloat0.5判定某一位为 enabledtrue还是 disabledfalse的阈值create_from选择数据来源create_from决定以图像的哪部分信息作为生成位图的依据共有两种模式属性描述原文见 class_resourceimporterbitmap.rstBlack White黑与白模式像素的 HSV 值大于threshold时该位视为 enabledtrueHSV 值小于或等于threshold时该位视为 disabledfalse。AlphaAlpha 通道模式像素的 Alpha 值大于threshold时该位视为 enabledtrueAlpha 值小于或等于threshold时该位视为 disabledfalse。从属性表默认值0及属性描述的枚举顺序可以推断0对应Black White模式1对应Alpha模式。两种模式的选择取决于你的源图片形态源图片本身就是纯黑白轮廓图如 logo、字形、剪影适合Black White直接把亮度转化为布尔值源图片带 Alpha 通道如半透明 PNG、带抗锯齿边缘的贴图适合Alpha直接把透明度转化为布尔值可以精确保留抗锯齿边缘的轮廓信息。threshold阈值判定threshold是一个0.0 ~ 1.0之间的浮点值默认0.5用于确定哪些位应被判定为 enabled 或 disabled阈值越高被判定为trueenabled的区域越小遮罩越苛刻阈值越低被判定为true的区域越大遮罩越宽松。例如在Alpha模式下若源图某像素 Alpha 0.6则当threshold 0.5时该位为true若把threshold提高到0.7则该位变为false。调整阈值时建议边调边在导入预览中观察效果找到恰好能覆盖交互区域又不过度外扩的取值。与运行时 API 的对应关系值得一提的是ResourceImporterBitMap的两个参数与BitMap类的运行时方法create_from_image_alpha()在语义上高度一致见 class_bitmap.rstcreate_from_image_alpha(image: Image, threshold: float 0.1)该方法根据给定图像的尺寸创建位图若图像在该位置的 Alpha 值等于或小于threshold则对应位设为false否则为true——与导入器的Alpha模式判定规则完全同源。也就是说你既可以在编辑器里通过导入器静态生成位图也可以在运行时用代码对任意Image实时生成位图判定逻辑一致。注意运行时方法的默认阈值是0.1与导入器默认值0.5不同混用时需留意。三、编辑器实操把图片导入为 BitMap 资源导入流程与文件存放Godot 的导入流程遵循统一规则把图片文件PNG、JPG、WebP、SVG 等直接放入项目文件夹或从系统文件管理器拖拽到编辑器的 FileSystem 停靠面板Godot 便会自动导入资源并将导入产物隐藏在res://.godot/imported/目录中见 tutorials/assets_pipeline/import_process.rst。注意访问导入资源必须通过ResourceLoader即load()它会自动解析内部文件的存放位置直接用FileAccess读取在编辑器里能工作但在导出的项目中会失败。切换导入类型为 BitMap默认情况下图片会被导入为 Texture2D。要改为 BitMap 类型在 FileSystem 停靠面板选中图片后打开Import面板将导入类型切换为BitMap对应 tutorials/assets_pipeline/importing_images.rst 中 Changing import type 一节列出的可选导入类型之一。切换到 BitMap 后面板中会出现create_from与threshold两个参数供调整。此时即可根据上节内容设置数据来源与阈值。设置完成后点击Reimport按钮应用更改切换导入类型或修改参数后必须先点击 Reimport若在点击前选中了 FileSystem 面板中的其他文件本次修改会被丢弃Reimport 后的参数只对该素材及后续的重复导入生效若需要批量修改可在 FileSystem 中同时选中多个素材Import 面板中每个参数左侧会出现勾选框勾选后统一修改并点击重新导入所有被选中素材只会应用勾选参数的变化见 tutorials/assets_pipeline/import_process.rst当源文件的 MD5 校验和发生变化时Godot 会自动重新导入该素材并使用为其配置的预设参数。导入完成后在脚本中即可通过load()拿到BitMap资源并使用。配置示例制作一个圆形按钮的点击遮罩以典型的圆形按钮精确点击为例完整的配置与使用步骤如下准备一张圆形图案的 PNG白色圆形、透明或黑色背景均可放入项目目录在 FileSystem 中选中它Import 面板中将导入类型切换为BitMap若图片本身是白色图形 黑色背景选择create_from 0Black Whitethreshold保持在0.5附近若图片依赖 Alpha 通道表达形状例如带抗锯齿边缘的半透明贴图选择create_from 1Alpha再按需微调threshold点击Reimport生成 BitMap 资源在场景中把生成的 BitMap 拖到TextureButton的texture_click_mask属性或TouchScreenButton的bitmask属性上。之后当玩家点击按钮矩形范围内、但落在圆形遮罩之外的透明角落时按钮将不会响应点击。四、脚本侧的读取与动态生成导入的 BitMap 资源既可以直接挂在控件上使用也可以在脚本中查询和操纵其数据。以下代码展示了核心读写方式方法签名均出自 class_bitmap.rst# 加载导入的 BitMap 资源 var mask: BitMap load(res://icon_bitmap.png) # 实际路径以导入后的资源路径为准 # 查询某一位的值笛卡尔坐标 var enabled: bool mask.get_bit(10, 20) # 等价于 get_bitv(Vector2i(10, 20)) # 获取尺寸与 true 位数 var size: Vector2i mask.get_size() var true_count: int mask.get_true_bit_count() # 运行时从任意 Image 的 Alpha 通道生成位图 var bitmap : BitMap.new() bitmap.create_from_image_alpha(some_image, 0.5)常用方法速查方法说明create(size)创建指定尺寸、全部为false的空位图create_from_image_alpha(image, threshold 0.1)按 Alpha 通道与阈值生成位图get_bit(x, y)/get_bitv(position)查询指定位置的值set_bit(x, y, bit)/set_bitv(position, bit)设置指定位置的值set_bit_rect(rect, bit)将矩形区域整体设为指定值get_size()返回位图尺寸get_true_bit_count()返回值为true的位数量convert_to_image()转为FORMAT_L8灰度图像true→白、false→黑grow_mask(pixels, rect)形态学膨胀/腐蚀正数膨胀、负数腐蚀rect外区域不受影响opaque_to_polygons(rect, epsilon 2.0)用 marching squares RDP 算法提取覆盖矩形区域的多边形其中grow_mask()可用于修正遮罩边缘误差例如对遮罩膨胀 1~2 像素避免边缘漏点opaque_to_polygons()则可以把遮罩轮廓转化为多边形顶点集用于碰撞体或判定区域的生成——注意 RDP 算法的epsilon越小生成的多边形点数越多、贴合越精确要覆盖整个位图可传入Rect2(Vector2(), get_size())。五、类参考速览ResourceImporterBitMap不提供任何可调用方法全部接口仅为两个导入属性完整参考见 class_resourceimporterbitmap.rstProperties int create_from 0 float threshold 0.5其继承链ResourceImporterBitMap ResourceImporter RefCounted Object意味着它同样受ResourceImporter基类框架约束如ImportOrder枚举默认导入顺序为 0场景导入顺序为 100自定义导入器一般应低于 100 以避免依赖问题详见 class_resourceimporter.rst但在日常使用中你只需关心create_from与threshold两个参数。六、总结ResourceImporterBitMap是 Godot 将图片转换为 1-bit 布尔矩阵的核心入口仅凭create_from数据来源亮度或 Alpha与threshold判定阈值两个参数即可完成全部配置。它的实际价值体现在与TextureButton.texture_click_mask、TouchScreenButton.bitmask的组合使用上让异形按钮的像素级点击判定变得简单可靠同时BitMap类在运行时提供了与导入参数语义一致的方法族create_from_image_alpha、get_bit、grow_mask、opaque_to_polygons等支持静态导入与动态生成两种工作流。掌握编辑器导入配置 脚本运行时读取这套组合即可应对各类需要精确遮罩与掩码判定的 2D 交互场景。赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐Godot BitMap 布尔矩阵完全指南位图存储、点击蒙层与多边形化Godot BitMap 布尔矩阵完全指南位图存储、点击蒙层与多边形化 本文围绕 Godot 引擎内置的 BitMap 类参考文档 https://link.文档教程游戏开发Phaser 3.60 遮罩系统重构实战Bitmap Mask 共享 RenderTarget 与 Geometry Mask 增强解析Phaser 3.60 遮罩系统重构实战Bitmap Mask 共享 RenderTarget 与 Geometry Mask 增强解析 输出文章 Phas游戏开发图形学前端Godot Engine2D精灵遮罩动画序列帧遮罩效果Godot Engine2D精灵遮罩动画序列帧遮罩效果 什么是精灵遮罩动画 精灵遮罩动画是一种通过控制可见区域来创建动态效果的技术在2D游戏开发中广泛用于角游戏开发图形学跨平台上一篇初创公司技术合伙人Awesome CTO中的股权分配与角色定位下一篇Midway 服务与依赖注入Provide / Inject 核心机制与实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考