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)
PostLateUpdate() |
在计算 IK 后,在帧的末尾附近触发。此时获取骨骼位置将为您提供最新的位置,以便它们不会落后一帧。 |
Udon Input Events:Udon 输入事件(9Event)
此事件将会在所有平台以统一的方式读取玩家控制器的输入,即使玩家重新映射(更改绑定)控制器,这些事件也将会正常工作。
以下所有说到的对应案件仅指的是在玩家没有更改自己的默认设置的情况下的可能位置,实际上只要对应的条件达到,无论是什么东西触发的事件都会正常触发。
Event:Interact:触发事件
Interact() |
当 VRChat 玩家与此对象交互时触发。 |
Button Events:按钮事件
按钮事件包括一个 bool 值,按下按钮时为 true,释放按钮时为 false
除了按钮事件之外,组件还会带有一个UdonInputEventArgs的对象,对象定义请进入下方链接查看:
https://creators.vrchat.com/worlds/udon/input-events/#udoninputeventargs
InputJump() |
触发条件:跳跃键:PC上的空格,控制器上的Face按钮 |
InputUse() |
触发条件:触发键:在 PC 上单击鼠标左键,控制器上的触发(前扳机)按钮 |
InputGrab() |
触发条件:抓握:在桌面上单击鼠标左键,通常是 VR 控制器上的抓握按钮 |
InputDrop() |
触发条件:结束抓握:在桌面上单击鼠标左键,松开 VR 控制器上的抓握按钮 |
Axis Events:方向轴事件
事件的 float 值通常介于 -1 和 1 之间。当使用带有模拟摇杆的控制器时,每次值变化都会触发一个新事件,从 0 到 0.1,然后到 0.2,依此类推。桌面用户将输出整数:-1、0、1 等。
InputMoveHorizontal() |
输入水平移动 桌面上的 A 和 D,通常是控制器上左右移动的左摇杆/垫 |
InputMoveVertical() |
输入垂直移动(前后移动) 桌面上的 W 和 S,通常是控制器上下移动的左摇杆/垫 |
InputLookVertical() |
输入垂直视角(上下看) 在桌面上上下移动鼠标,通常是在游戏手柄和 VR 控制器上上下移动右摇杆。 |
InputLookHorizontal() |
输入水平视角(左右看) 在桌面上左右移动鼠标,使用右摇杆/手柄向左和向右转动,无需舒适打开 VR 控制器,通常是在游戏手柄控制器上左右右摇杆。 |
Udon Pickup Events:Udon拾取事件(4Event)
本类下的四个事件都需要保证物体已经挂载了VrcPickup脚本,您可以在以下链接找到关于这个脚本的信息
https://docs.vrczh.org/creators.vrchat.com/worlds/components/vrc_pickup
OnDrop() |
当 VRChat 玩家在抓住后放置此对象时触发。 |
OnPickup() |
当 VRChat 播放器拾取此对象时触发 |
OnPickupUseup() |
按住此对象并按下 Use 按钮时触发。按钮向上时触发。在桌面上需要 'Auto Hold'。 |
OnpickupUseDown() |
按住此对象并按下 Use 按钮时触发。按下按钮时触发。在桌面上需要 'Auto Hold'。 |
Udon Networking Events:Udon网络事件(5Event)
OnOwnershipRequest() |
当 UdonBehaviour 将要更改所有者时触发。
将会返回UdonBehaviour是否接受所有权变更 |
OnOwnershipTransferred() |
每次 UdonBehaviour 更改所有者时触发 |
OnpreSerialization() |
在发送网络数据之前触发 |
OnpostSerialization() |
在发送网络数据后触发,并提供有关序列化尝试是否成功以及序列化了多少字节的数据。 |
OnDeserialization() |
收到网络数据时触发 |
Udon Player Events:Udon玩家活动(11Event)
该类下的事件还会附带触发事件的玩家的数据,以供处理
当玩家加入时触发
|
|
当玩家离开时触发 | |
当玩家重生时触发 | |
当玩家进入触发器区域时触发 | |
当玩家停留在触发器区域时触发 | |
当玩家离开触发器区域时触发 | |
当玩家和碰撞体碰撞时触发 | |
当玩家停留在碰撞体上时触发 | |
当玩家离开碰撞体时触发 | |
当碰撞粒子击中玩家时触发 | |
当碰撞体与玩家触碰时触发 |
Udon Station Events:Udon站点事件(2Event)
具体用法请看官方文档,这里只介绍触发事件
https://docs.vrczh.org/creators.vrchat.com/worlds/components/vrc_station
OnstationEntered |
当玩家进入时触发 |
OnStationExited |
当玩家离开时触发 |
Udon Video Events:Udon视频播放器事件(5Event)
UdonGraph不存在Pause和Start两个事件,请注意
OnVideoEnd() |
当视频播放器结束播放时 |
OnvideoError |
当播放器发生错误时 |
OnVideoLoop |
如果启用了循环,这将在结束时触发 |
OnvideoStart |
首次播放视频时(未确认) |
OnvideoRedy |
当视频播放器加载了 url 时 |
Udon MIDI Events:UdonMIDI事件(3Event)
请移步https://docs.vrczh.org/creators.vrchat.com/worlds/udon/midi/查看关于Midi的相关信息以及参数定义
MidiNoteON |
接收到 "Note On" 时触发。无论是 MIDI 回放还是按下您乐器上的按键都会触发该事件。 |
MidiNoteOFF |
接收到 "Note On" 时触发。一般会在松开您乐器上的按键时触发的。 |
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:图像加载
OnImageLoadSuccess |
当图像下载成功时触发。 |
OnImageLoadError |
镜像下载失败时触发。 |
OnstringLoadSuccess |
字符串下载成功时触发。 |
OnstringLoadError |
字符串下载失败时触发。 |
Unity Events:Unity事件
并非Udon特有的事件,而是Unity原生自带的事件,事件一共有28个事件,覆盖了大部分的使用场景
具体效果请看unity原文https://docs.unity3d.com/ScriptReference/MonoBehaviour.html
FixedUpdate:固定更新(与帧速率无关的Event消息,用于物理计算) | |
LateUpdata:延迟更新(如果启用了 Behaviour,则每帧都会调用 ) | |
OnAnimatorIK(用于设置动画 IK (反向运动学) 的回调。)
Int LayerIndex: 调用 IK 解算器的层的索引 |
|
OnAnimatorMove(用于处理动画移动的回调,用于修改根运动) | |
(Graph中未找到) |
OnAudioFilterRead(Unity 会将自定义滤波器插入音频 DSP 链中。) |
(Graph中未找到) |
OnBecameVisible(在渲染器被任何照相机可见时调用) |
(Graph中未找到) | OnBecameInvisible(当渲染器不再被任何摄像机看到时调用) |
OnCollisionEnter:碰撞进入(当此碰撞体/刚体开始接触另一个刚体/碰撞体时,将调用)
Collision other: 与此碰撞关联的 Collision 数据 |
|
OnCollisionEnter2D:碰撞输入2D(当传入碰撞体与此对象的碰撞体接触时发送(仅限 2D 物理特性))
CollisionEnter2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnCollisionExit:碰撞离开(当此碰撞体/刚体停止接触另一个刚体/碰撞体时,将调用)
Collision other: 与此碰撞关联的 Collision 数据 |
|
OnCollisionExit2D:碰撞离开2D(当另一个对象上的碰撞体停止接触此对象的碰撞体时发送 (仅限 2D 物理特性)
CollisionEnter2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnCollisionStay:持续碰撞(对于接触另一个碰撞体或刚体的每个碰撞体或刚体,每帧调用一次)
Collision other: 与此碰撞关联的 Collision 数据 |
|
OnCollisionStay2D:持续碰撞2D(在另一个对象上的碰撞体接触此对象的碰撞体时发送每一帧(仅限 2D 物理特性)) |
|
OnControllerColliderHit:当控制器在执行 Move 时碰到碰撞体时,将调用
ControllerColliderHit Hit: 与此碰撞关联的所有数据(控制器,对象等)数据 |
|
OnDestroy:(销毁附加的行为将导致游戏或场景接收 OnDestroy。) |
|
(Graph中未找到) |
OnDrawGizmo:如果要绘制同样可拾取且始终绘制的小工具,请实现这个 |
(Graph中未找到) | OnDrawGizmosSelected:如果选择了对象,则实现 OnDrawGizmosSelected 以绘制 Gizmo。 |
OnDisable:当对象行为被禁用时,将调用此函数 | |
OnEnable:当对象变为启用和活动状态时,将调用此函数。 |
|
OnJointBreak:当连接到同一游戏对象的关节损坏时调用。
float breakForce: 应用于关节的断开力 |
|
OnJointBreak2D:当附加到同一游戏对象的 Joint2D 中断时调用
Joint2D breakForce: 应用于关节的断开力 |
|
OnMouseDown:当用户在 Collider 上按下鼠标左键时调用。 | |
OnMouseDrag:在用户单击碰撞体并持续按住鼠标时调用。 |
|
OnMouseEnter:当鼠标进入 Collider 时调用。 | |
OnMouseExit:当鼠标不再位于 Collider 上时调用 |
|
OnMouseOver:当鼠标悬停在 Collider (碰撞体) 上时,每帧调用一次。 | |
OnMouseUp:在用户释放鼠标按钮时调用。 | |
OnMouseUpAsButton:仅当鼠标在按下鼠标的同一碰撞体上释放时,才会调用 |
|
OnParticleCollision:在粒子撞击碰撞体时调用
GameObject other: 从附加到具有碰撞体的游戏对象的脚本调用 OnParticleCollision 时,GameObject 参数表示 ParticleSystem。碰撞体 (Collider) 在每个粒子系统中最多接收一条消息,该粒子系统在任何给定帧中与其发生碰撞,即使碰撞体 (Collider) 当 Particle System 在当前帧中用多个粒子撞击 Collider 时。 要检索有关 ParticleSystem 引起的所有碰撞的详细信息,必须使用 ParticlePhysicsExtensions.GetCollisionEvents 来检索 ParticleSystem.CollisionEvent 的数组。
|
|
OnParticleTrigger:当粒子系统中的任何粒子满足触发器模块中的条件时,将调用 |
|
OnPostRender:Unity 在 Camera 渲染场景后调用的事件函数。 |
|
OnPreCull:用于在渲染循环中的此时执行您自己的代码 |
|
OnPreRender:用于在渲染循环中的此时执行您自己的代码;例如 |
|
OnRenderImage:该函数在 Unity 完成渲染后调用,用于修改摄像机的最终图像。
RenderTextur sre: 包含源图像的 RenderTexture。
RenderTextur dest: 要使用修改后的图像更新的 RenderTexture |
|
OnRenderObject:在摄像机渲染场景后调用。 |
|
OnTransformChildrenChanged:当 GameObject 的转换的子项列表发生更改时,将调用此函数 |
|
OnTransformParentChanged:当游戏对象转换的直接或间接父级发生更改时,将调用此函数。 |
|
OnTriggerEnter:当一个游戏对象与另一个游戏对象发生碰撞时调用
Collision other: 与此碰撞关联的 Collision 数据 |
|
OnTriggerEnter2D:当另一个对象进入附加到此对象的触发器碰撞器时发送 (仅限 2D 物理特性)
Collision2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnTriggerExit:当 Collider other 停止接触触发器时调用。
Collision2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnTriggerExit2D:当另一个对象离开附加到此对象的触发器碰撞器时发送 (仅限 2D 物理特性)。
Collision2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnTriggerStay:对于每个物理更新,对于每个接触触发器的碰撞体调用一次。
Collision2D Other: 与此碰撞关联的 Collision2D 数据 |
|
OnTriggerStay2D:当另一个对象位于附加到此对象的触发碰撞器内时,每次物理更新发送一次 (仅限 2D 物理)。
Collision2D Other: 与此碰撞关联的 Collision2D 数据 |
|
(Graph中未找到) |
OnValidate:Unity 在加载脚本或 Inspector 中的值更改时调用的仅限编辑器的函数。 |
OnWillRenderObject:如果对象可见且不是 UI 元素,则为每个摄像机调用函数 |
|
(Graph中未找到) |
Reset:重置为默认值。 |
Start:Start 在首次调用任何 Update 方法之前启用脚本时,将在帧上调用 |
|
Update:如果启用了 MonoBehaviour,则每帧都会调用 Update。 |
No Comments