首页 > 编程问答 >可扩展的触摸屏按钮纹理

可扩展的触摸屏按钮纹理

时间:2024-06-05 17:03:25浏览次数:25  
标签:godot4

如何在 Godot 中使`TouchScreenButton`可展开,从而使其边缘不会拉伸?使用普通按钮时,我们可以编辑主题,并在 `Style.normal` 下添加 `StyleBoxTexture` 以防止边缘拉伸。我如何使用 `TouchScreenButton` 实现这一功能?

TouchScreenButton 纹理可以像 ninepachrect 一样在不拉伸边缘的情况下展开


虽然 TouchScreenButton 没有像 Button 那样的主题选项和 StyleBoxTexture 属性,但你可以通过其他方式实现类似的效果:

1. 使用 NinePatchRect 作为背景:

  • 在你的场景中创建一个 TouchScreenButton 节点。
  • TouchScreenButton 节点下创建一个 NinePatchRect 节点。
  • NinePatchRect 的纹理设置为你想用于按钮的图像。
  • 调整 NinePatchRect 的 margins 属性,以定义图像中可拉伸和不可拉伸的区域。
  • 确保 NinePatchRect 覆盖整个按钮区域。

这样,当 TouchScreenButton 的大小改变时, NinePatchRect 会根据其 margins 属性进行缩放,从而避免边缘拉伸。

2. 使用代码动态调整纹理区域:

  • 在你的 TouchScreenButton 节点的脚本中,获取其 TextureRect 节点( $TextureRect )。
  • _ready() 函数中,根据按钮的初始大小和纹理区域计算出边缘的偏移量。
  • _process() _physics_process() 函数中,监听按钮大小的变化。
  • 当按钮大小发生变化时,根据之前计算的偏移量动态调整 TextureRect margin 属性,以保持边缘区域不被拉伸。

3. 使用自定义着色器:

  • TouchScreenButton 创建一个新的着色器。
  • 在着色器代码中,使用 UV 坐标和按钮大小计算出需要拉伸的区域。
  • 对需要拉伸的区域进行纹理采样,并对边缘区域进行特殊处理,例如重复边缘像素或使用固定的颜色。

这种方法需要一定的着色器编程知识,但可以实现更精细的控制和效果。

请根据你的具体需求选择最适合你的方法。希望这些信息能帮到你!

标签:godot4
From: 78579860

相关文章

  • godot4.2 vscode配置
    launch.json文件{//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"name":......
  • (学习)godot4.2 Android调试
      1勾选远程部署  2安装Android构建模板  3cmd运行以下命令获取debug.keystorekeytool-keyalgRSA-genkeypair-aliasandroiddebugkey-keypassandroid-keystoredebug.keystore-storepassandroid-dname"CN=AndroidDebug,O=Android,C=US"-valid......
  • 【Godot4自学手册】第二十七节自定义状态机完成看守地宫怪物
    本节,我将使用自定义状态机实现看守地宫怪物,完成了基础类State,状态机类StateMachine的编码,实现了怪物的闲置巡逻类、追踪类和攻击类,以及对应动画等。这节代码有点多,不过还好,代码比较简单。最终效果如下:一、基本概念状态机(StateMachine)是有限状态自动机的简称,是指一个数学......
  • GODOT4 按键重映射
    创建按钮创建Button节点,勾选属性Togglemode创建脚本在按钮上创建gb脚本在脚本中键入如下代码:@exportvaraction:String="ui_accept"#要重映射的动作名称[项目设置->输入映射]中的名称在gb脚本的_ready()方法中键入如下代码:func_ready(): #set_focu......
  • Visual Studio 2022 直接运行调试 Godot4 C# 项目
    https://94zl.com/1在Godot创建任意C#脚本文件2在Godot中构筑项目3VS打开你刚才构筑的项目,编辑.csproj文件(直接点一下解决方案里的C#项目会自动打开).加......