Skip to main content

UdonGraph 基础教程:Event事件速查表

本期来盘点UdonGraph中所预设的所有事件的触发条件以及对应名称,本文将会按照官方文档中记载的顺序进行讲解,如果需要阅读原文请点击https://docs.vrczh.org/udonsharp.docs.vrchat.com/events#udon-update-events跳转至官方文档。

请善用Ctrl+F的网页搜索功能


UdonGraphEvent事件速查

Udon Events:Udon独有事件

本类下的事件由来自UdonSharpBehaviour,是Vrchat独有的事件类型。

Udon Update Events:Udon更新事件(1Event)

833Gq13PALR3L7CU-bb9da30abef068a005cf0b0a276478f9.png

PostLateUpdate()

 

 

在计算 IK 后,在帧的末尾附近触发。此时获取骨骼位置将为您提供最新的位置,以便它们不会落后一帧。

Udon Input Events:Udon 输入事件(9Event)

此事件将会在所有平台以统一的方式读取玩家控制器的输入,即使玩家重新映射(更改绑定)控制器,这些事件也将会正常工作。

以下所有说到的对应案件仅指的是在玩家没有更改自己的默认设置的情况下的可能位置,实际上只要对应的条件达到,无论是什么东西触发的事件都会正常触发。

Event:Interact:触发事件

ed579bf0259f7722ead50c064c9e39aa.png

Interact()

当 VRChat 玩家与此对象交互时触发。
Button Events:按钮事件

按钮事件包括一个 bool 值,按下按钮时为 true,释放按钮时为 false

除了按钮事件之外,组件还会带有一个UdonInputEventArgs的对象,对象定义请进入下方链接查看:

https://creators.vrchat.com/worlds/udon/input-events/#udoninputeventargs

7af004c2d790c885ddc46d7130ed8939.png

InputJump()

 触发条件:跳跃键:PC上的空格,控制器上的Face按钮

f78b17c328f3578a4fda9fd8b1231075.png

InputUse()

触发条件:触发键:在 PC 上单击鼠标左键,控制器上的触发(前扳机)按钮

image.png

InputGrab()

触发条件:抓握:在桌面上单击鼠标左键,通常是 VR 控制器上的抓握按钮

6728b0644ccfea30906034ae6eb83565.png

InputDrop()

触发条件:结束抓握:在桌面上单击鼠标左键,松开 VR 控制器上的抓握按钮

Axis Events:方向轴事件

事件的 float 值通常介于 -1 和 1 之间。当使用带有模拟摇杆的控制器时,每次值变化都会触发一个新事件,从 0 到 0.1,然后到 0.2,依此类推。桌面用户将输出整数:-1、0、1 等。

824b304323907a4b4ab5e540376b339c.png

InputMoveHorizontal()

输入水平移动

桌面上的 A 和 D,通常是控制器上左右移动的左摇杆/垫

f37e350e7ae95f039d897a250872c182.png

InputMoveVertical()

输入垂直移动(前后移动)

桌面上的 W 和 S,通常是控制器上下移动的左摇杆/垫

image.png

InputLookVertical()

输入垂直视角(上下看)

在桌面上上下移动鼠标,通常是在游戏手柄和 VR 控制器上上下移动右摇杆。

image.png

InputLookHorizontal()

输入水平视角(左右看)

在桌面上左右移动鼠标,使用右摇杆/手柄向左和向右转动,无需舒适打开 VR 控制器,通常是在游戏手柄控制器上左右右摇杆。

Udon Pickup Events:Udon拾取事件(4Event)

本类下的四个事件都需要保证物体已经挂载了VrcPickup脚本,您可以在以下链接找到关于这个脚本的信息

https://docs.vrczh.org/creators.vrchat.com/worlds/components/vrc_pickup

image.png

OnDrop()

当 VRChat 玩家在抓住后放置此对象时触发。

image.png

OnPickup()

当 VRChat 播放器拾取此对象时触发

image.png

OnPickupUseup()

按住此对象并按下 Use 按钮时触发。按钮向上时触发。在桌面上需要 'Auto Hold'。

image.png

OnpickupUseDown()

按住此对象并按下 Use 按钮时触发。按下按钮时触发。在桌面上需要 'Auto Hold'。

Udon Networking Events:Udon网络事件(5Event)

image.png

OnOwnershipRequest()

当 UdonBehaviour 将要更改所有者时触发。

 

将会返回UdonBehaviour是否接受所有权变更

image.png

OnOwnershipTransferred()

每次 UdonBehaviour 更改所有者时触发

image.png

OnpreSerialization()

在发送网络数据之前触发

image.png

OnpostSerialization()

在发送网络数据后触发,并提供有关序列化尝试是否成功以及序列化了多少字节的数据。

image.png

OnDeserialization()

收到网络数据时触发

Udon Player Events:Udon玩家活动(11Event)

该类下的事件还会附带触发事件的玩家的数据,以供处理

image.png

当玩家加入时触发

 


image.png

当玩家离开时触发

image.png

当玩家重生时触发

image.png

当玩家进入触发器区域时触发

image.png

当玩家停留在触发器区域时触发

image.png

当玩家离开触发器区域时触发

image.png

当玩家和碰撞体碰撞时触发

167fbe634a89f05f0759613f98a0b940.png

当玩家停留在碰撞体上时触发

image.png

当玩家离开碰撞体时触发

image.png

当碰撞粒子击中玩家时触发

509c96bab750d250b683c2b418b18cac.png

当碰撞体与玩家触碰时触发

Udon Station Events:Udon站点事件(2Event)

具体用法请看官方文档,这里只介绍触发事件

https://docs.vrczh.org/creators.vrchat.com/worlds/components/vrc_station

image.png

OnstationEntered

当玩家进入时触发

image.png

OnStationExited

当玩家离开时触发

Udon Video Events:Udon视频播放器事件(5Event)

UdonGraph不存在Pause和Start两个事件,请注意

28af213c51fedfff2175bc519e4d17fd.png

OnVideoEnd()

当视频播放器结束播放时

6fe62c4bf64c3afdd4a9cc9bc7c8e9b0.png

OnvideoError

当播放器发生错误时

b5aa54abbdc8929208fd8ba16f824b7f.png

OnVideoLoop

如果启用了循环,这将在结束时触发

24428cc0837c4732bc1c8640312937dc.png

OnvideoStart

首次播放视频时(未确认)

12404df475ab24ab7e1db5e3a64af997.png

OnvideoRedy

当视频播放器加载了 url 时

Udon MIDI Events:UdonMIDI事件(3Event)

请移步https://docs.vrczh.org/creators.vrchat.com/worlds/udon/midi/查看关于Midi的相关信息以及参数定义

dd3fbfcb2e7de950c61d4a65381ac5c1.png

MidiNoteON

接收到 "Note On" 时触发。无论是 MIDI 回放还是按下您乐器上的按键都会触发该事件。

cd314bbee859fe2950d87dd72e883b4d.png

MidiNoteOFF

接收到 "Note On" 时触发。一般会在松开您乐器上的按键时触发的。

d3c49921fcb8f63c19e51bc6cade323c.png

MidiControlChange

接收到控制变化时触发。这些变化通常由 Midi 设备上的旋钮和滑块发出。

Udon String/Image Loading Events:Udon 字符串/图像加载事件(4Event)

具体使用方式请阅读:

https://docs.vrczh.org/creators.vrchat.com/worlds/udon/string-loading:字符串加载

https://docs.vrczh.org/creators.vrchat.com/worlds/udon/image-loading:图像加载

4e20ceac1836a250a6eecb222fe4bc04.png

OnImageLoadSuccess

当图像下载成功时触发。

760644e41199e4f8df2e942fa6e26966.png

OnImageLoadError

镜像下载失败时触发。

29c14646999ea1ee2a5b05bd9636273b.png

OnstringLoadSuccess

字符串下载成功时触发。

2ca163c5c840119d79d5b9fde23df13f.png

OnstringLoadError

字符串下载失败时触发。

Unity Events:Unity事件

并非Udon特有的事件,而是Unity原生自带的事件,事件一共有28个事件,覆盖了大部分的使用场景

具体效果请看unity原文https://docs.unity3d.com/ScriptReference/MonoBehaviour.html

image.png

FixedUpdate:固定更新(与帧速率无关的Event消息,用于物理计算)

3314b7a2d232446859c71ac4edbdd565.png

LateUpdata:延迟更新(如果启用了 Behaviour,则每帧都会调用 )

38a8fe4dea987c5c45b5caa2f9e5118a.png

OnAnimatorIK(用于设置动画 IK (反向运动学) 的回调。)

 

Int LayerIndex:

调用 IK 解算器的层的索引

image.png

OnAnimatorMove(用于处理动画移动的回调,用于修改根运动)
(Graph中未找到)

OnAudioFilterRead(Unity 会将自定义滤波器插入音频 DSP 链中。)

(Graph中未找到)

OnBecameVisible(在渲染器被任何照相机可见时调用)

(Graph中未找到) OnBecameInvisible(当渲染器不再被任何摄像机看到时调用)

3363f189e2d212dd4d2f9237343d1958.png

OnCollisionEnter:碰撞进入(当此碰撞体/刚体开始接触另一个刚体/碰撞体时,将调用)

 

Collision other:

与此碰撞关联的 Collision 数据

e338c0b2b773f5f3d182c25940004dab.png

OnCollisionEnter2D:碰撞输入2D(当传入碰撞体与此对象的碰撞体接触时发送(仅限 2D 物理特性))

 

CollisionEnter2D Other:

与此碰撞关联的 Collision2D 数据

81e5a66387d04a190462b76e661fd8e1.png

OnCollisionExit:碰撞离开(当此碰撞体/刚体停止接触另一个刚体/碰撞体时,将调用)

 

Collision other:

与此碰撞关联的 Collision 数据

da5a85ffb2dd281ae944467aae1f0e49.png

OnCollisionExit2D:碰撞离开2D(当另一个对象上的碰撞体停止接触此对象的碰撞体时发送

(仅限 2D 物理特性)

 

CollisionEnter2D Other:

与此碰撞关联的 Collision2D 数据

13c484833b19a69d609efabda8a4c0ce.png

OnCollisionStay:持续碰撞(对于接触另一个碰撞体或刚体的每个碰撞体或刚体,每帧调用一次)

 

Collision other:

与此碰撞关联的 Collision 数据

370826c38e8d2e6beb1c6145ce4f7f7e.png

OnCollisionStay2D:持续碰撞2D(在另一个对象上的碰撞体接触此对象的碰撞体时发送每一帧(仅限 2D 物理特性))

e76c031ba476fa3a742dae3be4c7f958.png

OnControllerColliderHit:当控制器在执行 Move 时碰到碰撞体时,将调用

 

ControllerColliderHit Hit:

与此碰撞关联的所有数据(控制器,对象等)数据

3b28b482e0b5f7bce5e327b5a9f20d58.png

OnDestroy:(销毁附加的行为将导致游戏或场景接收 OnDestroy。)

(Graph中未找到)

OnDrawGizmo:如果要绘制同样可拾取且始终绘制的小工具,请实现这个

(Graph中未找到) OnDrawGizmosSelected:如果选择了对象,则实现 OnDrawGizmosSelected 以绘制 Gizmo。

db730393aff697ff30f5e1e78a9c302e.png

OnDisable:当对象行为被禁用时,将调用此函数

bab14cbacd4b75fcce5bd7dfbe5e1525.png

OnEnable:当对象变为启用和活动状态时,将调用此函数。

ed4bd7a90e78a9f57aa89c3c0e1765fa.png

OnJointBreak:当连接到同一游戏对象的关节损坏时调用。

 

 

float breakForce:

应用于关节的断开力

285d53c47da362044ccdf6d4d7c0f144.png

OnJointBreak2D:当附加到同一游戏对象的 Joint2D 中断时调用

 

Joint2D breakForce:

应用于关节的断开力

6e8cd20aed8d2fdf32fc9a9533072d49.png

OnMouseDown:当用户在 Collider 上按下鼠标左键时调用。

fece9a6b2e2496c37d2aa2138ad1c603.png

OnMouseDrag:在用户单击碰撞体并持续按住鼠标时调用。

ccedcb69d004455a3fc66df6b5e43563.png

OnMouseEnter:当鼠标进入 Collider 时调用。

9452d4c4d03f666f8411418359d9c1f8.png

OnMouseExit:当鼠标不再位于 Collider 上时调用

ea564d6eee9a0b94b5a6093d9ac80fa4.png

OnMouseOver:当鼠标悬停在 Collider (碰撞体) 上时,每帧调用一次。

12fc59bb4fc9013c09d6f34e1d6d6dfc.png

OnMouseUp:在用户释放鼠标按钮时调用。

0b9fe8ecd115eef4627e04721664ce16.png

OnMouseUpAsButton:仅当鼠标在按下鼠标的同一碰撞体上释放时,才会调用

c9e6944689b1834eab9ee0a3b1728643.png

OnParticleCollision:在粒子撞击碰撞体时调用

 

GameObject other:

从附加到具有碰撞体的游戏对象的脚本调用 OnParticleCollision 时,GameObject 参数表示 ParticleSystem碰撞体 (Collider) 在每个粒子系统中最多接收一条消息,该粒子系统在任何给定帧中与其发生碰撞,即使碰撞体 (Collider) 当 Particle System 在当前帧中用多个粒子撞击 Collider 时。 要检索有关 ParticleSystem 引起的所有碰撞的详细信息,必须使用 ParticlePhysicsExtensions.GetCollisionEvents 来检索 ParticleSystem.CollisionEvent 的数组。

 

591e5b4d032a421ac9cfe013e6abe1ea.png

OnParticleTrigger:当粒子系统中的任何粒子满足触发器模块中的条件时,将调用

44ea4df98d38f1a6e32d100791afcf39.png

OnPostRender:Unity 在 Camera 渲染场景后调用的事件函数。

67e145694dfca3bb23e7e6241df74190.png

OnPreCull:用于在渲染循环中的此时执行您自己的代码

f5b2ebbf39a03f83d90fd54956d9a071.png

OnPreRender:用于在渲染循环中的此时执行您自己的代码;例如

e2a7c5210da9193565eac8279f3c2048.png

OnRenderImage:该函数在 Unity 完成渲染后调用,用于修改摄像机的最终图像。

 

RenderTextur sre:

包含源图像的 RenderTexture

 

RenderTextur dest:

要使用修改后的图像更新的 RenderTexture

6f7788dd94068e9931eee1da9f587084.png

OnRenderObject:在摄像机渲染场景后调用。

af782e9f1b92608e3d1924ea372e9d0c.png

OnTransformChildrenChanged:当 GameObject 的转换的子项列表发生更改时,将调用此函数

f4d4546b9b44437ed0ba8b3c581cc1ee.png

OnTransformParentChanged:当游戏对象转换的直接或间接父级发生更改时,将调用此函数。

d27d8d7d71a964a54cac0c9cb6081e7b.png

OnTriggerEnter:当一个游戏对象与另一个游戏对象发生碰撞时调用

 

Collision other:

与此碰撞关联的 Collision 数据

a873f69d260a3e0a1bf6c564866df684.png

OnTriggerEnter2D:当另一个对象进入附加到此对象的触发器碰撞器时发送

(仅限 2D 物理特性)

 

Collision2D Other:

与此碰撞关联的 Collision2D 数据

bfb560d9d06e2f0b0ac1ec8627f00273.png

OnTriggerExit:当 Collider other 停止接触触发器时调用。

 

Collision2D Other:

与此碰撞关联的 Collision2D 数据

f14fe42f2d537742c82d1bc6662c8057.png

OnTriggerExit2D:当另一个对象离开附加到此对象的触发器碰撞器时发送

(仅限 2D 物理特性)。

 

Collision2D Other:

与此碰撞关联的 Collision2D 数据

bd3542b714c48f3677a65fd2d2287952.png

OnTriggerStay:对于每个物理更新,对于每个接触触发器的碰撞体调用一次。

 

Collision2D Other:

与此碰撞关联的 Collision2D 数据

d3fea7c4c8dcfd15fa31c9dd963d4031.png

OnTriggerStay2D:当另一个对象位于附加到此对象的触发碰撞器内时,每次物理更新发送一次

(仅限 2D 物理)。

 

Collision2D Other:

与此碰撞关联的 Collision2D 数据

(Graph中未找到)

OnValidate:Unity 在加载脚本或 Inspector 中的值更改时调用的仅限编辑器的函数。

9db4838e624d90e89dffc119da84ae89.png

OnWillRenderObject:如果对象可见且不是 UI 元素,则为每个摄像机调用函数

(Graph中未找到)

Reset:重置为默认值。

d4bfa3e0162db7334f85da22a3ff98a8.png

Start:Start 在首次调用任何 Update 方法之前启用脚本时,将在帧上调用

5c249725e252fc6e75cbf7cb575b8f46.png

Update:如果启用了 MonoBehaviour,则每帧都会调用 Update。