コンテンツにスキップ

イベント

override で書くものが 82 個、名前と引数の型で認識されるものが 43 個です。型は完全な名前で書いてあります。using を書けば短い名前で書けます。

基底の宣言を override して書くもの

Section titled “基底の宣言を override して書くもの”

宣言は基底が持っているので、public override を付けて書きます。

書き方呼ばれる名前引数が入る変数
void InputDrop(bool value, VRC.Udon.Common.UdonInputEventArgs args)_inputDropinputDropBoolValue inputDropArgs
void InputGrab(bool value, VRC.Udon.Common.UdonInputEventArgs args)_inputGrabinputGrabBoolValue inputGrabArgs
void InputJump(bool value, VRC.Udon.Common.UdonInputEventArgs args)_inputJumpinputJumpBoolValue inputJumpArgs
void InputLookHorizontal(float value, VRC.Udon.Common.UdonInputEventArgs args)_inputLookHorizontalinputLookHorizontalFloatValue inputLookHorizontalArgs
void InputLookVertical(float value, VRC.Udon.Common.UdonInputEventArgs args)_inputLookVerticalinputLookVerticalFloatValue inputLookVerticalArgs
void InputMoveHorizontal(float value, VRC.Udon.Common.UdonInputEventArgs args)_inputMoveHorizontalinputMoveHorizontalFloatValue inputMoveHorizontalArgs
void InputMoveVertical(float value, VRC.Udon.Common.UdonInputEventArgs args)_inputMoveVerticalinputMoveVerticalFloatValue inputMoveVerticalArgs
void InputUse(bool value, VRC.Udon.Common.UdonInputEventArgs args)_inputUseinputUseBoolValue inputUseArgs
void Interact()_interact
void MidiControlChange(int channel, int number, int value)_midiControlChangemidiControlChangeChannel midiControlChangeNumber midiControlChangeValue
void MidiNoteOff(int channel, int number, int velocity)_midiNoteOffmidiNoteOffChannel midiNoteOffNumber midiNoteOffVelocity
void MidiNoteOn(int channel, int number, int velocity)_midiNoteOnmidiNoteOnChannel midiNoteOnNumber midiNoteOnVelocity
void OnAsyncGpuReadbackComplete(VRC.SDK3.Rendering.VRCAsyncGPUReadbackRequest request)_onAsyncGpuReadbackCompleteonAsyncGpuReadbackCompleteRequest
void OnAvatarChanged(VRC.SDKBase.VRCPlayerApi player)_onAvatarChangedonAvatarChangedPlayer
void OnAvatarEyeHeightChanged(VRC.SDKBase.VRCPlayerApi player, float prevEyeHeightAsMeters)_onAvatarEyeHeightChangedonAvatarEyeHeightChangedPlayer onAvatarEyeHeightChangedPrevEyeHeightAsMeters
void OnContactEnter(VRC.Dynamics.ContactEnterInfo contactInfo)_onContactEnteronContactEnterContactInfo
void OnContactExit(VRC.Dynamics.ContactExitInfo contactInfo)_onContactExitonContactExitContactInfo
void OnControllerColliderHitPlayer(VRC.SDK3.ControllerColliderPlayerHit hit)_onControllerColliderHitPlayeronControllerColliderHitPlayerHit
void OnDeserialization(VRC.Udon.Common.DeserializationResult result)_onDeserializationonDeserializationResult
void OnDroneTriggerEnter(VRC.SDKBase.VRCDroneApi drone)_onDroneTriggerEnteronDroneTriggerEnterDrone
void OnDroneTriggerExit(VRC.SDKBase.VRCDroneApi drone)_onDroneTriggerExitonDroneTriggerExitDrone
void OnDroneTriggerStay(VRC.SDKBase.VRCDroneApi drone)_onDroneTriggerStayonDroneTriggerStayDrone
void OnDrop()_onDrop
void OnImageLoadError(VRC.SDK3.Image.IVRCImageDownload result)_onImageLoadErroronImageLoadErrorIVRCImageDownload
void OnImageLoadSuccess(VRC.SDK3.Image.IVRCImageDownload result)_onImageLoadSuccessonImageLoadSuccessIVRCImageDownload
void OnInputMethodChanged(VRC.SDKBase.VRCInputMethod inputMethod)_onInputMethodChangedonInputMethodChangedInputMethod
void OnLanguageChanged(string language)_onLanguageChangedonLanguageChangedLanguage
void OnListAvailableProducts(VRC.Economy.IProduct[] products)_onListAvailableProductsonListAvailableProductsResult
void OnListProductOwners(VRC.Economy.IProduct product, string[] owners)_onListProductOwnersonListProductOwnersResult onListProductOwnersOwners
void OnListPurchases(VRC.Economy.IProduct[] products, VRC.SDKBase.VRCPlayerApi player)_onListPurchasesonListPurchasesResult onListPurchasesPlayer
void OnMasterTransferred(VRC.SDKBase.VRCPlayerApi newMaster)_onMasterTransferredonMasterTransferredNewMaster
bool OnOwnershipRequest(VRC.SDKBase.VRCPlayerApi requestingPlayer, VRC.SDKBase.VRCPlayerApi requestedOwner)_onOwnershipRequestonOwnershipRequestRequester onOwnershipRequestNewOwner
void OnOwnershipTransferred(VRC.SDKBase.VRCPlayerApi player)_onOwnershipTransferredonOwnershipTransferredPlayer
void OnPersistenceUsageUpdated()_onPersistenceUsageUpdated
void OnPhysBoneGrabbed(VRC.Dynamics.PhysBoneGrabbedInfo physBoneInfo)_onPhysBoneGrabbedonPhysBoneGrabbedPhysBoneInfo
void OnPhysBonePosed(VRC.Dynamics.PhysBonePosedInfo physBoneInfo)_onPhysBonePosedonPhysBonePosedPhysBoneInfo
void OnPhysBoneReleased(VRC.Dynamics.PhysBoneReleasedInfo physBoneInfo)_onPhysBoneReleasedonPhysBoneReleasedPhysBoneInfo
void OnPhysBoneUnPosed(VRC.Dynamics.PhysBoneUnPosedInfo physBoneInfo)_onPhysBoneUnPosedonPhysBoneUnPosedPhysBoneInfo
void OnPickup()_onPickup
void OnPickupUseDown()_onPickupUseDown
void OnPickupUseUp()_onPickupUseUp
void OnPlayerCollisionEnter(VRC.SDKBase.VRCPlayerApi player)_onPlayerCollisionEnteronPlayerCollisionEnterPlayer
void OnPlayerCollisionExit(VRC.SDKBase.VRCPlayerApi player)_onPlayerCollisionExitonPlayerCollisionExitPlayer
void OnPlayerCollisionStay(VRC.SDKBase.VRCPlayerApi player)_onPlayerCollisionStayonPlayerCollisionStayPlayer
void OnPlayerDataStorageExceeded(VRC.SDKBase.VRCPlayerApi player)_onPlayerDataStorageExceededonPlayerDataStorageExceededPlayer
void OnPlayerDataStorageWarning(VRC.SDKBase.VRCPlayerApi player)_onPlayerDataStorageWarningonPlayerDataStorageWarningPlayer
void OnPlayerDataUpdated(VRC.SDKBase.VRCPlayerApi player, VRC.SDK3.Persistence.PlayerData.Info[] infos)_onPlayerDataUpdatedonPlayerDataUpdatedPlayer onPlayerDataUpdatedInfos
void OnPlayerJoined(VRC.SDKBase.VRCPlayerApi player)_onPlayerJoinedonPlayerJoinedPlayer
void OnPlayerLeft(VRC.SDKBase.VRCPlayerApi player)_onPlayerLeftonPlayerLeftPlayer
void OnPlayerObjectStorageExceeded(VRC.SDKBase.VRCPlayerApi player)_onPlayerObjectStorageExceededonPlayerObjectStorageExceededPlayer
void OnPlayerObjectStorageWarning(VRC.SDKBase.VRCPlayerApi player)_onPlayerObjectStorageWarningonPlayerObjectStorageWarningPlayer
void OnPlayerParticleCollision(VRC.SDKBase.VRCPlayerApi player)_onPlayerParticleCollisiononPlayerParticleCollisionPlayer
void OnPlayerRespawn(VRC.SDKBase.VRCPlayerApi player)_onPlayerRespawnonPlayerRespawnPlayer
void OnPlayerRestored(VRC.SDKBase.VRCPlayerApi player)_onPlayerRestoredonPlayerRestoredPlayer
void OnPlayerSuspendChanged(VRC.SDKBase.VRCPlayerApi player)_onPlayerSuspendChangedonPlayerSuspendChangedPlayer
void OnPlayerTriggerEnter(VRC.SDKBase.VRCPlayerApi player)_onPlayerTriggerEnteronPlayerTriggerEnterPlayer
void OnPlayerTriggerExit(VRC.SDKBase.VRCPlayerApi player)_onPlayerTriggerExitonPlayerTriggerExitPlayer
void OnPlayerTriggerStay(VRC.SDKBase.VRCPlayerApi player)_onPlayerTriggerStayonPlayerTriggerStayPlayer
void OnPostSerialization(VRC.Udon.Common.SerializationResult result)_onPostSerializationonPostSerializationResult
void OnPreSerialization()_onPreSerialization
void OnProductEvent(VRC.Economy.IProduct product, VRC.SDKBase.VRCPlayerApi player)_onProductEventonProductEventResult onProductEventPlayer
void OnPurchaseConfirmed(VRC.Economy.IProduct product, VRC.SDKBase.VRCPlayerApi player, bool purchasedNow)_onPurchaseConfirmedonPurchaseConfirmedResult onPurchaseConfirmedPlayer onPurchaseConfirmedPurchasedNow
void OnPurchaseConfirmedMultiple(VRC.Economy.IProduct product, VRC.SDKBase.VRCPlayerApi player, bool purchasedNow, int quantity)_onPurchaseConfirmedMultipleonPurchaseConfirmedMultipleResult onPurchaseConfirmedMultiplePlayer onPurchaseConfirmedMultiplePurchasedNow onPurchaseConfirmedMultipleQuantity
void OnPurchaseExpired(VRC.Economy.IProduct product, VRC.SDKBase.VRCPlayerApi player)_onPurchaseExpiredonPurchaseExpiredResult onPurchaseExpiredPlayer
void OnPurchasesLoaded(VRC.Economy.IProduct[] products, VRC.SDKBase.VRCPlayerApi player)_onPurchasesLoadedonPurchasesLoadedResult onPurchasesLoadedPlayer
void OnScreenUpdate(VRC.SDK3.Platform.ScreenUpdateData data)_onScreenUpdateonScreenUpdateData
void OnSpawn()_onSpawn
void OnStationEntered(VRC.SDKBase.VRCPlayerApi player)_onStationEnteredonStationEnteredPlayer
void OnStationExited(VRC.SDKBase.VRCPlayerApi player)_onStationExitedonStationExitedPlayer
void OnStringLoadError(VRC.SDK3.StringLoading.IVRCStringDownload result)_onStringLoadErroronStringLoadErrorIVRCStringDownload
void OnStringLoadSuccess(VRC.SDK3.StringLoading.IVRCStringDownload result)_onStringLoadSuccessonStringLoadSuccessIVRCStringDownload
void OnVRCCameraSettingsChanged(VRC.SDK3.Rendering.VRCCameraSettings cameraSettings)_onVRCCameraSettingsChangedonVRCCameraSettingsChangedCamera
void OnVRCPlusMassGift(VRC.SDKBase.VRCPlayerApi gifter, int numGifts)_onVRCPlusMassGiftonVRCPlusMassGiftGifter onVRCPlusMassGiftNumGifts
void OnVRCQualitySettingsChanged()_onVRCQualitySettingsChanged
void OnVideoEnd()_onVideoEnd
void OnVideoError(VRC.SDK3.Components.Video.VideoError videoError)_onVideoErroronVideoErrorVideoError
void OnVideoLoop()_onVideoLoop
void OnVideoPause()_onVideoPause
void OnVideoPlay()_onVideoPlay
void OnVideoReady()_onVideoReady
void OnVideoStart()_onVideoStart
void PostLateUpdate()_postLateUpdate

名前と引数の型で認識されるもの

Section titled “名前と引数の型で認識されるもの”

基底に宣言がないので、自分で宣言を書きます。戻り値は void です。

書き方呼ばれる名前引数が入る変数
void FixedUpdate()_fixedUpdate
void LateUpdate()_lateUpdate
void OnAnimatorIK(int layerIndex)_onAnimatorIKonAnimatorIKLayerIndex
void OnAnimatorMove()_onAnimatorMove
void OnBecameInvisible()_onBecameInvisible
void OnBecameVisible()_onBecameVisible
void OnCollisionEnter(UnityEngine.Collision other)_onCollisionEnteronCollisionEnterOther
void OnCollisionEnter2D(UnityEngine.Collision2D other)_onCollisionEnter2DonCollisionEnter2DOther
void OnCollisionExit(UnityEngine.Collision other)_onCollisionExitonCollisionExitOther
void OnCollisionExit2D(UnityEngine.Collision2D other)_onCollisionExit2DonCollisionExit2DOther
void OnCollisionStay(UnityEngine.Collision other)_onCollisionStayonCollisionStayOther
void OnCollisionStay2D(UnityEngine.Collision2D other)_onCollisionStay2DonCollisionStay2DOther
void OnControllerColliderHit(UnityEngine.ControllerColliderHit hit)_onControllerColliderHitonControllerColliderHitHit
void OnDestroy()_onDestroy
void OnDisable()_onDisable
void OnEnable()_onEnable
void OnJointBreak(float breakForce)_onJointBreakonJointBreakBreakForce
void OnJointBreak2D(UnityEngine.Joint2D brokenJoint)_onJointBreak2DonJointBreak2DBrokenJoint
void OnMouseDown()_onMouseDown
void OnMouseDrag()_onMouseDrag
void OnMouseEnter()_onMouseEnter
void OnMouseExit()_onMouseExit
void OnMouseOver()_onMouseOver
void OnMouseUp()_onMouseUp
void OnMouseUpAsButton()_onMouseUpAsButton
void OnParticleCollision(UnityEngine.GameObject other)_onParticleCollisiononParticleCollisionOther
void OnParticleTrigger()_onParticleTrigger
void OnPostRender()_onPostRender
void OnPreCull()_onPreCull
void OnPreRender()_onPreRender
void OnRenderImage(UnityEngine.RenderTexture src, UnityEngine.RenderTexture dest)_onRenderImageonRenderImageSrc onRenderImageDest
void OnRenderObject()_onRenderObject
void OnTransformChildrenChanged()_onTransformChildrenChanged
void OnTransformParentChanged()_onTransformParentChanged
void OnTriggerEnter(UnityEngine.Collider other)_onTriggerEnteronTriggerEnterOther
void OnTriggerEnter2D(UnityEngine.Collider2D other)_onTriggerEnter2DonTriggerEnter2DOther
void OnTriggerExit(UnityEngine.Collider other)_onTriggerExitonTriggerExitOther
void OnTriggerExit2D(UnityEngine.Collider2D other)_onTriggerExit2DonTriggerExit2DOther
void OnTriggerStay(UnityEngine.Collider other)_onTriggerStayonTriggerStayOther
void OnTriggerStay2D(UnityEngine.Collider2D other)_onTriggerStay2DonTriggerStay2DOther
void OnWillRenderObject()_onWillRenderObject
void Start()_start
void Update()_update
書き方説明エラー理由代わりに
public void _start() と void Start()実行環境が使う名前をメソッド名にするTUKI0001環境メソッドの名前を変える

名前の間違いが止まるのは、override で書くイベントだけです。名前で認識されるほうには、 この網がありません。

書き方名前を間違えると引数の形を間違えると
override で書く(82 個)CS0115 で止まりますCS0115 で止まります
名前と引数の型で書く(43 個)通ります。呼ばれません通ります。呼ばれません

2 通りに分かれているのは、イベントの出どころが 2 つあるからです。override で書く 82 個は VRChat のイベントで、基底クラスが宣言を持っています。名前で認識される 43 個は Unity の メッセージで、MonoBehaviour を遡っても宣言はどこにもありません。Unity 自身が昔から 名前で呼ぶ仕組みだからです。

呼ばれる仕組みは、どちらも同じです。コンパイラが決まった名前と引数の型の一覧に照合して、 一致したメソッドに _start のようなエントリポイントの名前を付けて出します。実行環境はその名前で呼びます。 C# の仮想呼び出しは通っていません。override の宣言は、C# のコンパイラに名前を検査させる ために置いてあります。

∴ 書いた形を検査する人が、2 通りで違います。override のほうは C# のコンパイラが見ます。 名前で認識されるほうは誰も見ません。前の節の表は、この差がそのまま出たものです。

名前で認識されるほうは、宣言を自分で書きます。いちばん短い形が Start です。

using UnityEngine;
using Tsukimi;
public class EventsStart : TsukimiBehaviour
{
void Start()
{
Debug.Log(1); // => 1
}
}

override で書くほうは、基底が持っている宣言に合わせます。

using UnityEngine;
using Tsukimi;
public class EventsInteract : TsukimiBehaviour
{
public override void Interact()
{
Debug.Log(2);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

綴りも引数の型も C# が見るので、間違えればその場で止まります。

using UnityEngine;
using Tsukimi;
using VRC.SDKBase;
public class R_events_override_typo : TsukimiBehaviour
{
public override void OnPlayerJoind(VRCPlayerApi player)
{
Debug.Log(player.playerId);
}
}

名前で認識されるほうには、この安全がありません。名前と引数の型が表と一致したものだけが イベントになり、外れたものは普通のメソッドとして扱われます。次の Update は引数を 1 つ 取るので、イベントではありません。呼ぶものが無いので、命令も作られません。

using UnityEngine;
using Tsukimi;
public class EventsNameMatchMiss : TsukimiBehaviour
{
private void Update(float delta)
{
Debug.Log(2);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

見える範囲は問いません。private を付けたメソッドもイベントになります。

using UnityEngine;
using Tsukimi;
public class EventsPrivateEvent : TsukimiBehaviour
{
private void LateUpdate()
{
Debug.Log(2);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

実行環境は、イベント名の先頭を小文字にして _ を付けた名前でプログラムを呼びます。 Start なら _start です。一覧の表の真ん中の列が、この名前です。

この名前はメソッドの名前とは別に登録されます。同じ綴りのメソッドを自分で書くと登録が 二重になるので、その形は TUKI0001 で断られます。

using UnityEngine;
using Tsukimi;
public class R_events_entry_collision : TsukimiBehaviour
{
public void _start()
{
Debug.Log(2);
}
void Start()
{
Debug.Log(1);
}
}

Udon に引数を渡す仕組みはありません。実行環境は、値を名前の付いた変数へ先に書き込み、 そのあとイベントを呼びます。

変数の名前は、先頭を小文字にしたイベント名と、先頭を大文字にした実行環境側の引数名を つないだものです。一覧の表の右の列が、この名前です。

名前が 1 文字でも違うと、書き込みはどこにも届きません。イベントは呼ばれ、引数は 初期値のまま走ります。エラーも実行時の失敗も出ません。この対応づけはコンパイラが持っていて、 実行環境が持つイベントの定義と突き合わせてあります。

using UnityEngine;
using Tsukimi;
using VRC.SDKBase;
public class EventsPlayerJoined : TsukimiBehaviour
{
public override void OnPlayerJoined(VRCPlayerApi player)
{
Debug.Log(player.playerId);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

変数の名前を決めるのは実行環境側の引数名で、自分が書いた引数名ではありません。 引数の名前は自由に付けられます。

using UnityEngine;
using Tsukimi;
using VRC.SDKBase;
public class EventsParameterName : TsukimiBehaviour
{
public override void OnPlayerLeft(VRCPlayerApi who)
{
Debug.Log(who.playerId);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

名前で認識されるイベントも同じ規則で受け取ります。

using UnityEngine;
using Tsukimi;
public class EventsTriggerEnter : TsukimiBehaviour
{
void OnTriggerEnter(Collider other)
{
Debug.Log(other.gameObject.activeSelf);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

基底の宣言にある引数名と、実行環境が値を書きに来る変数の名前が食い違っているイベントが 22 個あります。書いた引数名は使われないので、動きに違いはありません。

イベント基底の宣言にある引数名引数が入る変数
InputDropvalueinputDropBoolValue
InputGrabvalueinputGrabBoolValue
InputJumpvalueinputJumpBoolValue
InputLookHorizontalvalueinputLookHorizontalFloatValue
InputLookVerticalvalueinputLookVerticalFloatValue
InputMoveHorizontalvalueinputMoveHorizontalFloatValue
InputMoveVerticalvalueinputMoveVerticalFloatValue
InputUsevalueinputUseBoolValue
OnImageLoadErrorresultonImageLoadErrorIVRCImageDownload
OnImageLoadSuccessresultonImageLoadSuccessIVRCImageDownload
OnListAvailableProductsproductsonListAvailableProductsResult
OnListProductOwnersproductonListProductOwnersResult
OnListPurchasesproductsonListPurchasesResult
OnOwnershipRequestrequestingPlayer requestedOwneronOwnershipRequestRequester onOwnershipRequestNewOwner
OnProductEventproductonProductEventResult
OnPurchaseConfirmedproductonPurchaseConfirmedResult
OnPurchaseConfirmedMultipleproductonPurchaseConfirmedMultipleResult
OnPurchaseExpiredproductonPurchaseExpiredResult
OnPurchasesLoadedproductsonPurchasesLoadedResult
OnStringLoadErrorresultonStringLoadErrorIVRCStringDownload
OnStringLoadSuccessresultonStringLoadSuccessIVRCStringDownload
OnVRCCameraSettingsChangedcameraSettingsonVRCCameraSettingsChangedCamera
using UnityEngine;
using Tsukimi;
using VRC.Udon.Common;
public class EventsInputJump : TsukimiBehaviour
{
public override void InputJump(bool value, UdonInputEventArgs args)
{
Debug.Log(value);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

引数の無い宣言も持っているイベントが 4 個あります。引数を使わないなら、こちらで書けます。

イベントもう 1 つの書き方
OnDeserializationvoid OnDeserialization()
OnOwnershipTransferredvoid OnOwnershipTransferred()
OnStationEnteredvoid OnStationEntered()
OnStationExitedvoid OnStationExited()
using UnityEngine;
using Tsukimi;
public class EventsNoArgumentOverload : TsukimiBehaviour
{
public override void OnStationEntered()
{
Debug.Log(2);
}
void Start()
{
Debug.Log(1);
}
}
// 出力
// 1

コードを書かずに呼ばれるもの

Section titled “コードを書かずに呼ばれるもの”

一覧の表に並ぶイベントは、どれも呼び出しを書かずに呼ばれます。Interact なら、プレイヤーが そのオブジェクトを使ったときです(認識のされ方の例)。

イベントとは別に、メソッドを名前で呼ぶ形があります。public を付けたメソッドは名前で 登録され、SendCustomEvent の宛先になります。書き方と断られる形は コンポーネントどうしの連携 にまとめてあります。

登録は、そのプログラムの中に呼び出しが 1 つも無くても行われます。呼ぶ側が別のプログラムや 実行環境の側に居ると、コンパイルの時点では見えないためです。

OnDeserialization OnPreSerialization OnPostSerialization OnOwnershipRequest OnOwnershipTransferred は、値の同期と所有権に伴って呼ばれます。呼ばれる条件は 同期 にまとめてあります。

配布しているパッケージの基底では、次の 6 個が条件付きコンパイルで囲まれています。 プロジェクトでその機能を有効にしていないと、宣言そのものがないので override で書けません。

イベント条件
OnPersistenceUsageUpdatedVRC_ENABLE_PLAYER_PERSISTENCE || VRC_ENABLE_INSTANCE_PERSISTENCE
OnPlayerDataStorageExceededVRC_ENABLE_PLAYER_PERSISTENCE
OnPlayerDataStorageWarningVRC_ENABLE_PLAYER_PERSISTENCE
OnPlayerDataUpdatedVRC_ENABLE_PLAYER_PERSISTENCE
OnPlayerObjectStorageExceededVRC_ENABLE_PLAYER_PERSISTENCE
OnPlayerObjectStorageWarningVRC_ENABLE_PLAYER_PERSISTENCE

次の 2 個は書けますが、実行環境が持つイベントの定義に入っていません。この名前を override した既存のコードが、そのまま通るようにしてあります。

イベント
OnVideoPause
OnVideoPlay

実行環境の側にあって、この言語が持っていないイベントは 1 個です。OnVariableChange は 変数ごとに違う名前で呼ばれる形なので、1 つのイベントとしては置けません。

using UnityEngine;
using Tsukimi;
public class R_events_on_variable_change : TsukimiBehaviour
{
public override void OnVariableChange()
{
Debug.Log(1);
}
}