参考

笔、板擦、白板和场景墨迹的每个字段与调用,以及编辑器设置 API。

更新于 2026-10-22

一切都在 Udonite.Pens 里;编辑器 API 是 Udonite.Pens.Editor.PensSetup。

Pen 和 Eraser

两者都是工具:握持方式和书写位置的规则相同。

握持

成员
holding VrcPickup 跟随同一物体上的 VRCPickup;Custom 等待下面的调用
undoKey 通过 VRCPickup 握持时用于撤销的桌面按键,默认 R
returnAfter 松手后经过多少秒,通过 VRCObjectSync 回到世界放置它的位置。0 表示不回去
haptics 通过 VRCPickup 握持时,开始书写会在 VR 手上短促振动一下。默认开启
tip 在 VR 中书写的点
world 场景的 PenWorld,留空会自动查找
SetHeld(bool) 本地玩家是否握着它
SetUse(bool) Use 是否按下
Undo() 撤销握笔者最近的一笔
PutBack() 松手并立即送回世界放置它的位置
bool IsHeld、bool IsDrawing 本地玩家正在用它做什么

书写位置

成员
desktopAim 桌面和手机玩家从哪里书写:View 是视线所在,Tip 是手中工具的笔尖在画面上的位置,并保持在这一笔开始时的距离
drawInAir 够不到白板时在空中书写。关闭后只在白板上书写
airDistance 桌面或手机玩家视线前方多少米处写空中墨迹,默认 0.5
reach 桌面或手机玩家能够到所注视白板的距离(米),默认 4
contactDistance VR 笔尖距白板在这个距离(米)以内仍可在上面书写
sendInterval 书写时的发送间隔(秒)

Pen

成员
colour、width 墨迹颜色和宽度(米)
inkStyle 使用 PenWorld.inkStyles 中的哪一种
spacing 笔尖移动多少米后笔画增加一个点
steadiness 笔尖缓慢移动时用于稳定手抖的秒数;快速书写时几乎紧跟笔尖。点的间距不会小于线宽的一半
snap 把每个点对齐到这个间距(米)的网格上。0 表示自由书写
pixelBrush 在像素板上围绕笔尖涂的格数

Eraser

成员
radius 笔尖或视线周围多少米内的笔画会被擦掉
pixelBrush 在像素板上清除的格数
eraseInterval 擦除间隔(秒)

PenWorld

场景的墨迹。

成员
lines、pointsPerLine 线条池,以及每条线的点数;更长的笔画会接续到下一条
inkStyles 笔画所复制的模板线条:材质、宽度曲线、纹理模式、端点和拐角
smoothing 在笔发送的每两个点之间沿曲线绘制的点数。默认 4,1 表示直线连接
taper 笔画两端变细的长度(以线宽计)。0.5 让两端变圆,0 则切成方头
inkLifetime 墨迹自行消失前的秒数。0 表示保留
keepLeaversInk 玩家离开后保留其墨迹
lateJoinerBytes、joinDelay、catchUpSeconds 后来加入的玩家收到多少墨迹、何时收到
boards 所有白板,顺序在所有客户端一致。由 Refresh Boards 填写
StrokeTable Strokes 本客户端显示的笔画,供需要读取的世界使用
StartStroke、AddInk、SendInk 用代码书写笔画
EraseAt(point, radius)、EraseAlong(from, to, radius) 像板擦一样擦除
UndoLatest() 撤销本地玩家最近的一笔
ClearPen(pen) 为所有人擦除某支笔的颜色、宽度和样式画出的全部笔画,不论是谁画的
Paint(board, kind, colour, cells) 为所有人涂像素板格子
ClearBoard(board)、ClearInk(surface)、ClearEverything() 为所有人清除

Whiteboard

成员
mode Ink 或 PixelGrid
size、inkLift 书写区域(米),以及墨迹浮在板前的距离
columns、rows 像素板格数,每边最多 256
palette、background 像素板的颜色,以及板擦涂的颜色
surface、textureProperty、smoothPixels 像素的显示方式
publishDelay、publishInterval 为后来者保存画面的快慢
int ColourAt(cell) 某格显示的颜色索引
int CellAt(point) 某点下方的格子

ClearButton

成员
boards 要清除的白板
clearAirInk 同时清除空中的墨迹
access Everyone 或实例所有者
label 按钮上的文字

编辑器

Udonite > Pens 下的每个菜单项都是 PensSetup 的包装。每个调用都返回它创建的东西,同名的已存在时则返回现有的。

成员
CreatePenSet(Vector3) 托盘上的四支笔和一块板擦
CreatePen(name, colour, position, inkStyle, width) 一支笔
CreateEraser(name, position)、CreateTray(position) 板擦、托盘
CreateWhiteboard(name, mode, position, rotation, size) 墨迹白板或像素板
CreateClearButton(board) 白板旁的清除按钮
CreateInkStyle(name, material, widthCurve) 一种墨迹样式,返回其索引
SetInkLines(world, count) 设置线条池大小
Refresh() 把场景中的白板登记到 PenWorld
SyncPreset.Light、Balanced、Smooth Apply(world, pens, erasers) 一次设定网络设置
出了点问题 重新加载