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

建设一个网站的步骤有哪些广州seo教程

建设一个网站的步骤有哪些,广州seo教程,wordpress 嵌入iframe,长春火车站咨询电话概述 借鉴B站UP主JACKADUX去年8月份的Godot 进阶技法 | 创建自定义的 StyleBox 资源类型中的案例源码,加上自己的简单发挥,搞定了自定义StyleBox。 这意味着可以很大程度上不再受限于Godot自己提供的4种StyleBox的限制,尤其是StyleBoxFlat&…

概述

借鉴B站UP主JACKADUX去年8月份的Godot 进阶技法 | 创建自定义的 StyleBox 资源类型中的案例源码,加上自己的简单发挥,搞定了自定义StyleBox

这意味着可以很大程度上不再受限于Godot自己提供的4种StyleBox的限制,尤其是StyleBoxFlat,而StyleBox则是自定义容器和控件样式必备的,也就意味着在UI界面设计上将有更多的可能。

StyleBox总结

StyleBox { 样式盒基类 可以用于: { Panel、PanelContainer Button、LineEdit、CodeEdit、Tree控件等的背景样式设定 分为: { StyleBoxEmpty: { 空样式盒 常用于控件主题覆盖中清除控件获得焦点的外框样式 StyleBoxFlat: { 不使用纹理的样式盒(常用) 可以用纯色形式绘制带圆角和边线的矩形样式盒 StyleBoxLine: { 显示左侧垂直和顶部水平边线 比较鸡肋 StyleBoxTexture: { 可以使用图片作为背景 包括渐变类型的GradientTexture1D、GradientTexture2D 缺点:无法在图片背景包括渐变的基础上进行圆角、边框等的设定 \footnotesize \text{StyleBox} \begin{cases} 样式盒基类\\ 可以用于: \begin{cases} \text{Panel、PanelContainer}\\ \text{Button、LineEdit、CodeEdit、Tree}控件等的背景样式设定\\ \end{cases} \\ 分为: \begin{cases} \text{StyleBoxEmpty}: \begin{cases} 空样式盒\\ 常用于控件主题覆盖中清除控件获得焦点的外框样式\\ \end{cases} \\ \text{StyleBoxFlat}: \begin{cases} 不使用纹理的样式盒(常用)\\ 可以用纯色形式绘制带圆角和边线的矩形样式盒\\ \end{cases} \\ \text{StyleBoxLine}: \begin{cases} 显示左侧垂直和顶部水平边线\\ 比较鸡肋\\ \end{cases} \\ \text{StyleBoxTexture}: \begin{cases} 可以使用图片作为背景\\ 包括渐变类型的\text{GradientTexture1D、GradientTexture2D}\\ 缺点:无法在图片背景包括渐变的基础上进行圆角、边框等的设定\\ \end{cases} \\ \end{cases} \\ \end{cases} StyleBox 样式盒基类可以用于:{PanelPanelContainerButtonLineEditCodeEditTree控件等的背景样式设定分为: StyleBoxEmpty{空样式盒常用于控件主题覆盖中清除控件获得焦点的外框样式StyleBoxFlat{不使用纹理的样式盒(常用)可以用纯色形式绘制带圆角和边线的矩形样式盒StyleBoxLine{显示左侧垂直和顶部水平边线比较鸡肋StyleBoxTexture 可以使用图片作为背景包括渐变类型的GradientTexture1DGradientTexture2D缺点:无法在图片背景包括渐变的基础上进行圆角、边框等的设定

自定义StyleBox

模仿了一个简单实例,应该说要直至核心:

@tool
class_name myStyleBox extends StyleBoxfunc _draw(to_canvas_item: RID, rect: Rect2) -> void:RenderingServer.canvas_item_add_circle(to_canvas_item,rect.get_center(),rect.size.y /2.0,Color.WHITE)
  • 自定义class_name并直接继承StyleBox
  • 因为StyleBox本质是Resource,而不是CanvasItem,所以它的_draw()处理是不同的,需要使用RenderingServer提供的方法处理绘图,而没有draw_*()方法可以用
  • 参数to_canvas_item指代的是应用该StyleBox的容器或控件,rect是其矩形包围盒,有了这两项,剩下基本就是处理形状点的求取和绘制了,具体可以参看我往期的Godot绘图函数内容
  • 因为要在编辑器中使用,所以需要设定@tool标记为工具脚本,否则无法实时生效

上面的自定义StyleBox添加到Panel控件效果如下:


可以看到基本的自定义绘制效果我们我们是走通了。接下来就是设定自定义参数,并实时影响绘制效果了。

改进版本

这里我改为一个类似聊天气泡的样式盒效果,添加若干参数,并计算和绘制:

@tool
class_name myStyleBox extends StyleBox## 箭头的总宽度
@export var d_left:float = 0:set(val):d_left = valemit_changed()## 箭头的总高度
@export var arrow_height:float = 20:set(val):arrow_height = valemit_changed()## 箭头的总高度
@export var bg_color:Color = Color.WHITE:set(val):bg_color = valemit_changed()func _draw(to_canvas_item: RID, rect: Rect2) -> void:# 箭头var p1 = Vector2(0,rect.get_center().y)var p2 = Vector2(d_left,rect.get_center().y - arrow_height/2.0)var p3 = Vector2(d_left,rect.get_center().y + arrow_height/2.0)var arrow:PackedVector2Array = [p1,p2,p3]# 矩形rect = Rect2(rect.position + Vector2(d_left,0),rect.size - Vector2(d_left,0))# 绘制RenderingServer.canvas_item_add_rect(to_canvas_item,rect,bg_color)RenderingServer.canvas_item_add_polygon(to_canvas_item,arrow,[bg_color])

其中:

  • 导出变量用于创建自定义参数,每个参数设定Setter,并在接收值的改变后调用自定义Resource必须调用的emit_changed(),让Godot编辑器知道资源发生了变化,从而动态的更新

效果:


总结

  • 自定义StyleBox并不难,本质还是和CanvasItem绘图类似,只不过需要调用RenderingServer的绘图函数绘制
  • 如果要在Godot编辑器中实时绘制需要设定@tool关键字
  • 自定义StyleBox_draw()也与CanvasItem_draw()有所区别,也并不提供queue_redraw()方法,只能是在自定义参数的Setter中通过调用emit_changed()通知Godot编辑器进行更新

文章转载自:

http://y3FSLNiN.Lkxzb.cn
http://PL7Oh6XL.Lkxzb.cn
http://ggTkMsJw.Lkxzb.cn
http://G0xX3xC2.Lkxzb.cn
http://7C1a6Jog.Lkxzb.cn
http://ybwr02rs.Lkxzb.cn
http://ilt76Xa7.Lkxzb.cn
http://rXw738HE.Lkxzb.cn
http://yMtu7OGb.Lkxzb.cn
http://5Ql3xZwk.Lkxzb.cn
http://A43sAv0c.Lkxzb.cn
http://UMjyvVoY.Lkxzb.cn
http://5rjlGEtK.Lkxzb.cn
http://FSdOVEDo.Lkxzb.cn
http://V2Ju77NP.Lkxzb.cn
http://BTOUyvt1.Lkxzb.cn
http://RnGjiX9H.Lkxzb.cn
http://ilzMSgKj.Lkxzb.cn
http://uhUFGWJo.Lkxzb.cn
http://ASDKCcjv.Lkxzb.cn
http://tJMHFz6L.Lkxzb.cn
http://F3CUiTiR.Lkxzb.cn
http://nx02kEHK.Lkxzb.cn
http://9DLX5J3a.Lkxzb.cn
http://wghcsqwA.Lkxzb.cn
http://Dsk3qBad.Lkxzb.cn
http://nHFD1DKS.Lkxzb.cn
http://NldexU3v.Lkxzb.cn
http://3BCeloqA.Lkxzb.cn
http://mYcSHdKS.Lkxzb.cn
http://www.dtcms.com/wzjs/759503.html

相关文章:

  • 做电影网站挣钱吗wordpress 一直崩溃
  • 网站部署到终端机怎么做网站上线倒计时 模板
  • 做排行的网站广州app设计公司
  • 公司创建网站要多少钱多人一起做视频网站
  • 网站关键词结构有名的外贸公司
  • 天工网官方网站设计师资源网站
  • 农业基本建设项目 网站基金管理公司司网站建设要求
  • 微信建设网站哪家好有没有女的做任务的网站
  • 便宜营销型网站建设优化建站世界比分榜
  • 电商网站建设概念摄影网站开发背景
  • 经营网站备案西湖区建设局网站
  • 怎么做好网站方式推广php网站开发专业介绍
  • 沈阳海外模板建站建设银行怎么加入信用网站
  • 昆明网站建设外包大连关键词快速排名
  • 建网站投放广告赚钱网站让百度收录应该怎么做
  • 企业网站使用不规范地图如何处罚app制作培训班
  • 游戏网站设计论文济宁推广
  • 网站建设行情建筑工程公司注册需要什么条件
  • 维护网站多少钱两耳清风怎么做网站
  • 网站php源码破解版网站开发需求分析模板
  • 效果好的网站制作上海seo整站优化
  • wordpress站点登陆肇庆网站建设方案外包
  • 织梦的网站地图更新宁波网站设计方案
  • 建筑专业网站有哪些公司装修效果图办公室
  • 网站数据统计直播是网站怎么做
  • 卡盟网站制作宁波建站推广技术公司
  • 网站备案添加域名要建设一个网站需要准备些什么
  • 网站建设要考虑的问题小程序开发费用一览表fhq华网天下
  • 福建建设资格执业注册管理中心网站最新站群
  • 网站建设需要桂ajax吗内蒙古城乡建设网站换名字了