跳至正文
版本:bleeding-edge 🩸

🖼️ 画布

画布是一个你可以在其上进行绘制的实体。

💂Authority
This class can only be spawned on 🟧 Client side.
🧑‍💻API Source
This page is auto-generated! The Functions, Properties and Events described here are defined in our GitHub's API Repository! Feel free to commit suggestions and changes to the source .json API files!

🎒 示例

Client/Index.lua
-- Spawns a Canvas
local my_canvas = Canvas(
true,
Color.TRANSPARENT,
0,
true
)

-- Subscribes for Update, we can only Draw inside this event
my_canvas:Subscribe("Update", function(self, width, height)
-- Draws a Text in the middle of the screen
self:DrawText("Hello World!", Vector2D(width / 2, height / 2))

-- Draws a red line Horizontally
self:DrawLine(Vector2D(0, height / 2), Vector2D(width, height / 2), 10, Color.RED)
end)

-- Forces the canvas to repaint, this will make it trigger the Update event
my_canvas:Repaint()

-- Applies the Canvas material into a Prop
any_prop:SetMaterialFromCanvas(my_canvas)
提示

You can use the output Texture from a Canvas with :SetMaterialFromCanvas() method!

🛠 构造函数

Default Constructor

No description provided

local my_canvas = Canvas(is_visible?, clear_color?, auto_repaint_rate?, should_clear_before_update?, auto_resize?, width?, height?, screen_position?)

Parameters

TypeNameDefaultDescription
booleanis_visibletrue是否将其绘制在屏幕上
Colorclear_colorColor.TRANSPARENT用于清除画布的颜色(背景颜色)
floatauto_repaint_rate-1自动重绘的频率(调用 Update 事件),传入 0 表示每一帧都重绘,传入 -1 表示禁用
booleanshould_clear_before_updatetrue是否在更新前使用清除颜色进行画布清除
booleanauto_resizetrue随屏幕大小自动调整尺寸
integerwidth0如果不使用 auto_resize
integerheight0如果不使用 auto_resize
Vector2Dscreen_positionVector2D(0, 0)如果不使用 auto_resize,在绘制到屏幕时的偏移量

🗿 静态函数

This class doesn't have own static functions.

🦠 函数

ReturnsNameDescription
Clear使用特定颜色清除画布
DrawBox在画布上绘制一个未填充的方框
DrawLine在画布上绘制一条线
DrawMaterial在画布上绘制材质
DrawMaterialFromSceneCapture在画布上绘制 SceneCapture
DrawMaterialFromWebUI在画布上绘制 WebUI
DrawPolygon在画布上绘制一个 N 多边形
DrawRect在画布上绘制一个填充后的矩形
DrawText在画布上绘制文本
DrawTexture在画布上绘制纹理
Vector2DGetSize获取画布大小
Repaint强制重绘
Resize如果不使用 auto_resize,调整画布大小
SetAutoRepaintRate设置重绘率
SetAutoResize设置画布是否应根据屏幕大小自动调整尺寸
SetScreenPosition设置画布屏幕位置的偏移量
SetVisibility设置其在屏幕上是否可见

Clear

使用特定颜色清除画布
my_canvas:Clear(clear_color)

Parameters

TypeParameterDefaultDescription
Colorclear_color Required parameter No description provided

DrawBox

在画布上绘制一个未填充的方框

该方法只能在 Update 事件内部调用
my_canvas:DrawBox(screen_position, screen_size, thickness, render_color?, blend_mode?)

Parameters

TypeParameterDefaultDescription
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
floatthickness Required parameter No description provided
Colorrender_color?Color.WHITE
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawLine

在画布上绘制一条线

该方法只能在 Update 事件内部调用
my_canvas:DrawLine(screen_position_a, screen_position_b, thickness, render_color, blend_mode?)

Parameters

TypeParameterDefaultDescription
Vector2Dscreen_position_a Required parameter No description provided
Vector2Dscreen_position_b Required parameter No description provided
floatthickness Required parameter No description provided
Colorrender_color Required parameter No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawMaterial

在画布上绘制材质

该方法只能在 Update 事件内部调用

注:由于虚幻引擎处理渲染目标的方式,在画布上绘制材质会导致奇怪的半透明效果。希望将来能有所改进。
my_canvas:DrawMaterial(material_path, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)

Parameters

TypeParameterDefaultDescription
Material Referencematerial_path Required parameter No description provided
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
Vector2Dcoordinate_position Required parameter No description provided
Vector2Dcoordinate_size?Vector2D(1, 1)
No description provided
floatrotation?0
No description provided
Vector2Dpivot_point?Vector2D(0.5, 0.5)
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawMaterialFromSceneCapture

在画布上绘制 SceneCapture

该方法只能在 Update 事件内部调用

注:由于虚幻引擎处理渲染目标的方式,在画布上绘制材质会导致奇怪的半透明效果。希望将来能有所改进。
my_canvas:DrawMaterialFromSceneCapture(scenecapture_entity, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)

Parameters

TypeParameterDefaultDescription
SceneCapturescenecapture_entity Required parameter No description provided
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
Vector2Dcoordinate_position Required parameter No description provided
Vector2Dcoordinate_size?Vector2D(1, 1)
No description provided
floatrotation?0
No description provided
Vector2Dpivot_point?Vector2D(0.5, 0.5)
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawMaterialFromWebUI

在画布上绘制 WebUI

该方法只能在 Update 事件内部调用

注:由于虚幻引擎处理渲染目标的方式,在画布上绘制材质会导致奇怪的半透明效果。希望将来能有所改进。
my_canvas:DrawMaterialFromWebUI(webui_entity, screen_position, screen_size, coordinate_position, coordinate_size?, rotation?, pivot_point?, blend_mode?)

Parameters

TypeParameterDefaultDescription
WebUIwebui_entity Required parameter No description provided
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
Vector2Dcoordinate_position Required parameter No description provided
Vector2Dcoordinate_size?Vector2D(1, 1)
No description provided
floatrotation?0
No description provided
Vector2Dpivot_point?Vector2D(0.5, 0.5)
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawPolygon

在画布上绘制一个 N 多边形

该方法只能在 Update 事件内部调用
my_canvas:DrawPolygon(texture_path, screen_position, radius?, number_of_sides?, render_color?, blend_mode?)

Parameters

TypeParameterDefaultDescription
Image Pathtexture_path Required parameter 传入空字符串以使用默认的白色纹理
Vector2Dscreen_position Required parameter No description provided
Vector2Dradius?Vector2D(1, 1)
No description provided
integernumber_of_sides?3
No description provided
Colorrender_color?Color.WHITE
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawRect

在画布上绘制一个填充后的矩形

该方法只能在 Update 事件内部调用
my_canvas:DrawRect(texture_path, screen_position, screen_size, render_color?, blend_mode?)

Parameters

TypeParameterDefaultDescription
Image Pathtexture_path Required parameter 传入空字符串以使用默认的白色纹理
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
Colorrender_color?Color.WHITE
No description provided
BlendModeblend_mode?BlendMode.Opaque
No description provided

DrawText

在画布上绘制文本

该方法只能在 Update 事件内部调用

阴影和描边在透明的 clear_color 下无法正常工作
my_canvas:DrawText(text, screen_position, font_type?, font_size?, text_color?, kerning?, center_x?, center_y?, shadow_color?, shadow_offset?, outlined?, outline_color?)

Parameters

TypeParameterDefaultDescription
stringtext Required parameter No description provided
Vector2Dscreen_position Required parameter No description provided
FontTypefont_type?FontType.Roboto
No description provided
integerfont_size?12
No description provided
Colortext_color?Color.WHITE
No description provided
floatkerning?0
No description provided
booleancenter_x?false
No description provided
booleancenter_y?false
No description provided
Colorshadow_color?Color.TRANSPARENT
No description provided
Vector2Dshadow_offset?Vector2D(1, 1)
No description provided
booleanoutlined?false
No description provided
Coloroutline_color?Color.BLACK
No description provided

DrawTexture

在画布上绘制纹理

该方法只能在 Update 事件内部调用
my_canvas:DrawTexture(texture_path, screen_position, screen_size, coordinate_position, coordinate_size?, render_color?, blend_mode?, rotation?, pivot_point?)

Parameters

TypeParameterDefaultDescription
Image Pathtexture_path Required parameter No description provided
Vector2Dscreen_position Required parameter No description provided
Vector2Dscreen_size Required parameter No description provided
Vector2Dcoordinate_position Required parameter No description provided
Vector2Dcoordinate_size?Vector2D(1, 1)
No description provided
Colorrender_color?Color.WHITE
No description provided
BlendModeblend_mode?BlendMode.AlphaBlend
推荐为具有透明度的纹理使用 AlphaBlend。否则你可以使用 Opaque。
floatrotation?0
No description provided
Vector2Dpivot_point?Vector2D(0.5, 0.5)
No description provided

GetSize

获取画布大小
local size = my_canvas:GetSize()

Returns

TypeDescription
Vector2D当前大小

Repaint

强制重绘,这将触发 Update 事件
my_canvas:Repaint()

Resize

如果不使用 auto_resize,调整画布大小
my_canvas:Resize(width, height)

Parameters

TypeParameterDefaultDescription
integerwidth Required parameter No description provided
integerheight Required parameter No description provided

SetAutoRepaintRate

将其设为 -1 以停止自动重绘,或设为 0 以在每一帧都进行重绘
my_canvas:SetAutoRepaintRate(auto_repaint_rate)

Parameters

TypeParameterDefaultDescription
booleanauto_repaint_rate Required parameter No description provided

SetAutoResize

设置画布是否应根据屏幕大小自动调整尺寸
my_canvas:SetAutoResize(auto_resize)

Parameters

TypeParameterDefaultDescription
booleanauto_resize Required parameter No description provided

SetScreenPosition

设置画布屏幕位置的偏移量
my_canvas:SetScreenPosition(screen_position)

Parameters

TypeParameterDefaultDescription
Vector2Dscreen_position Required parameter No description provided

SetVisibility

设置其在屏幕上是否可见
my_canvas:SetVisibility(visible)

Parameters

TypeParameterDefaultDescription
booleanvisible Required parameter No description provided

🚀 事件

NameDescription
Update当画布需要被绘制时调用

你只能在此事件内部调用 :Draw...() 方法

Update

当画布需要被绘制时调用

你只能在此事件内部调用 :Draw...() 方法
Canvas.Subscribe("Update", function(self, width, height)
-- Update was called
end)

Arguments

TypeArgumentDescription
CanvasselfNo description provided
integerwidthNo description provided
integerheightNo description provided