🖼️ 画布
画布是一个你可以在其上进行绘制的实体。
💂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
| Type | Name | Default | Description |
|---|---|---|---|
| boolean | is_visible | true | 是否将其绘制在屏幕上 |
| Color | clear_color | Color.TRANSPARENT | 用于清除画布的颜色(背景颜色) |
| float | auto_repaint_rate | -1 | 自动重绘的频率(调用 Update 事件),传入 0 表示每一帧都重绘,传入 -1 表示禁用 |
| boolean | should_clear_before_update | true | 是否在更新前使用清除颜色进行画布清除 |
| boolean | auto_resize | true | 随屏幕大小自动调整尺寸 |
| integer | width | 0 | 如果不使用 auto_resize |
| integer | height | 0 | 如果不使用 auto_resize |
| Vector2D | screen_position | Vector2D(0, 0) | 如果不使用 auto_resize,在绘制到屏幕时的偏移量 |
🗿 静态函数
This class doesn't have own static functions.
🦠 函数
| Returns | Name | Description | |
|---|---|---|---|
Clear | 使用特定颜色清除画布 | ||
DrawBox | 在画布上绘制一个未填充的方框 | ||
DrawLine | 在画布上绘制一条线 | ||
DrawMaterial | 在画布上绘制材质 | ||
DrawMaterialFromSceneCapture | 在画布上绘制 SceneCapture | ||
DrawMaterialFromWebUI | 在画布上绘制 WebUI | ||
DrawPolygon | 在画布上绘制一个 N 多边形 | ||
DrawRect | 在画布上绘制一个填充后的矩形 | ||
DrawText | 在画布上绘制文本 | ||
DrawTexture | 在画布上绘制纹理 | ||
| Vector2D | GetSize | 获取画布大小 | |
Repaint | 强制重绘 | ||
Resize | 如果不使用 auto_resize,调整画布大小 | ||
SetAutoRepaintRate | 设置重绘率 | ||
SetAutoResize | 设置画布是否应根据屏幕大小自动调整尺寸 | ||
SetScreenPosition | 设置画布屏幕位置的偏移量 | ||
SetVisibility | 设置其在屏幕上是否可见 |


Clear
使用特定颜色清除画布
my_canvas:Clear(clear_color)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| Color | clear_color | Required parameter | No description provided |


DrawBox
在画布上绘制一个未填充的方框
该方法只能在Update事件内部调用
my_canvas:DrawBox(screen_position, screen_size, thickness, render_color?, blend_mode?)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| float | thickness | Required parameter | No description provided |
| Color | render_color? | Color.WHITE | No description provided |
| BlendMode | blend_mode? | BlendMode.Opaque | No description provided |


DrawLine
在画布上绘制一条线
该方法只能在Update事件内部调用
my_canvas:DrawLine(screen_position_a, screen_position_b, thickness, render_color, blend_mode?)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| Vector2D | screen_position_a | Required parameter | No description provided |
| Vector2D | screen_position_b | Required parameter | No description provided |
| float | thickness | Required parameter | No description provided |
| Color | render_color | Required parameter | No description provided |
| BlendMode | blend_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| Material Reference | material_path | Required parameter | No description provided |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| Vector2D | coordinate_position | Required parameter | No description provided |
| Vector2D | coordinate_size? | Vector2D(1, 1) | No description provided |
| float | rotation? | 0 | No description provided |
| Vector2D | pivot_point? | Vector2D(0.5, 0.5) | No description provided |
| BlendMode | blend_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| SceneCapture | scenecapture_entity | Required parameter | No description provided |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| Vector2D | coordinate_position | Required parameter | No description provided |
| Vector2D | coordinate_size? | Vector2D(1, 1) | No description provided |
| float | rotation? | 0 | No description provided |
| Vector2D | pivot_point? | Vector2D(0.5, 0.5) | No description provided |
| BlendMode | blend_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| WebUI | webui_entity | Required parameter | No description provided |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| Vector2D | coordinate_position | Required parameter | No description provided |
| Vector2D | coordinate_size? | Vector2D(1, 1) | No description provided |
| float | rotation? | 0 | No description provided |
| Vector2D | pivot_point? | Vector2D(0.5, 0.5) | No description provided |
| BlendMode | blend_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| Image Path | texture_path | Required parameter | 传入空字符串以使用默认的白色纹理 |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | radius? | Vector2D(1, 1) | No description provided |
| integer | number_of_sides? | 3 | No description provided |
| Color | render_color? | Color.WHITE | No description provided |
| BlendMode | blend_mode? | BlendMode.Opaque | No description provided |


DrawRect
在画布上绘制一个填充后的矩形
该方法只能在Update事件内部调用
my_canvas:DrawRect(texture_path, screen_position, screen_size, render_color?, blend_mode?)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| Image Path | texture_path | Required parameter | 传入空字符串以使用默认的白色纹理 |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| Color | render_color? | Color.WHITE | No description provided |
| BlendMode | blend_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| string | text | Required parameter | No description provided |
| Vector2D | screen_position | Required parameter | No description provided |
| FontType | font_type? | FontType.Roboto | No description provided |
| integer | font_size? | 12 | No description provided |
| Color | text_color? | Color.WHITE | No description provided |
| float | kerning? | 0 | No description provided |
| boolean | center_x? | false | No description provided |
| boolean | center_y? | false | No description provided |
| Color | shadow_color? | Color.TRANSPARENT | No description provided |
| Vector2D | shadow_offset? | Vector2D(1, 1) | No description provided |
| boolean | outlined? | false | No description provided |
| Color | outline_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
| Type | Parameter | Default | Description |
|---|---|---|---|
| Image Path | texture_path | Required parameter | No description provided |
| Vector2D | screen_position | Required parameter | No description provided |
| Vector2D | screen_size | Required parameter | No description provided |
| Vector2D | coordinate_position | Required parameter | No description provided |
| Vector2D | coordinate_size? | Vector2D(1, 1) | No description provided |
| Color | render_color? | Color.WHITE | No description provided |
| BlendMode | blend_mode? | BlendMode.AlphaBlend | 推荐为具有透明度的纹理使用 AlphaBlend。否则你可以使用 Opaque。 |
| float | rotation? | 0 | No description provided |
| Vector2D | pivot_point? | Vector2D(0.5, 0.5) | No description provided |


GetSize
获取画布大小
local size = my_canvas:GetSize()
Returns
| Type | Description |
|---|---|
| Vector2D | 当前大小 |


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


Resize
如果不使用 auto_resize,调整画布大小
my_canvas:Resize(width, height)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| integer | width | Required parameter | No description provided |
| integer | height | Required parameter | No description provided |


SetAutoRepaintRate
将其设为 -1 以停止自动重绘,或设为 0 以在每一帧都进行重绘
my_canvas:SetAutoRepaintRate(auto_repaint_rate)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| boolean | auto_repaint_rate | Required parameter | No description provided |


SetAutoResize
设置画布是否应根据屏幕大小自动调整尺寸
my_canvas:SetAutoResize(auto_resize)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| boolean | auto_resize | Required parameter | No description provided |


SetScreenPosition
设置画布屏幕位置的偏移量
my_canvas:SetScreenPosition(screen_position)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| Vector2D | screen_position | Required parameter | No description provided |


SetVisibility
设置其在屏幕上是否可见
my_canvas:SetVisibility(visible)
Parameters
| Type | Parameter | Default | Description |
|---|---|---|---|
| boolean | visible | Required parameter | No description provided |
🚀 事件
| Name | Description | |
|---|---|---|
Update | 当画布需要被绘制时调用 你只能在此事件内部调用 :Draw...() 方法 |

Update
当画布需要被绘制时调用
你只能在此事件内部调用:Draw...()方法
Canvas.Subscribe("Update", function(self, width, height)
-- Update was called
end)