オブジェクトにアタッチされたUnityコンポーネントを操作するためのハンドルです。

このハンドルは下記の関数で取得できます。

ClusterScript.getUnityComponent または SubNode.getUnityComponent で取得した UnityComponent への操作は、アイテムの見た目や振る舞いを変更します。この変更はどのプレイヤーからも見る事ができます。

PlayerLocalObject.getUnityComponent で取得した UnityComponent への操作は、そのプレイヤーから見たコンポーネントの見た目や振る舞いを変更します。

いずれの関数でも、typeとしては特定のコンポーネント名のみが指定できます。 以下はサポートされているコンポーネント名の一覧です。

  • "Animator"
  • "AudioSource"
  • "Button"
  • "Camera"
  • "Canvas"
  • "CanvasGroup"
  • "BoxCollider"
  • "CapsuleCollider"
  • "GridLayoutGroup"
  • "HorizontalLayoutGroup"
  • "Image"
  • "MeshCollider"
  • "MeshRenderer"
  • "ParticleSystem"
  • "PlayableDirector"
  • "PositionConstraint"
  • "PostProcessVolume"
  • "RawImage"
  • "RectTransform"
  • "Rigidbody"
  • "RotationConstraint"
  • "ScaleConstraint"
  • "SkinnedMeshRenderer"
  • "SphereCollider"
  • "Text"
  • "Transform"
  • "VerticalLayoutGroup"
  • "VideoPlayer"

Hierarchy

  • UnityComponent

Properties

unityProp: UnityComponentPropertyProxy

Unityコンポーネントのプロパティを取得、または設定するためのハンドルを取得します。

このハンドルからプロパティを指定する場合、Unity C# でアクセス可能なコンポーネントのプロパティ名そのものを指定する必要があります。 Unity Editor のインスペクターで表示される名称と実際のプロパティ名は異なる場合があることに注意してください。 詳しくはUnityのAPIリファレンス等を参照してください。

unityProp でアクセスできるプロパティは、データ型が bool, int, float, double, string, Vector2, Vector3, Vector4, Quaternion, Color, または Enum の派生型のいずれかである必要があります。 それ以外のデータ型のプロパティは取得を試みると null が返ります。また、プロパティを設定しようとすると例外になります。

Vector4 型のデータは長さが4の float 配列として表現され、要素は順に x, y, z, w に対応します。 Vector4 型のプロパティを取得すると長さが4の float 配列が返ります。 同様に、 Vector4 型のプロパティを設定する場合は、長さが4の float 配列を指定します。

Color 型のデータは長さが4の float 配列として表現され、要素は順に r, g, b, a に対応します。 Color 型のプロパティを取得すると長さが4の float 配列が返ります。 同様に、 Color 型のプロパティを設定する場合は、長さが4の float 配列を指定します。

Enum の派生型のデータを取得した場合、値に対応する int が返ります。 同様に、Enum の派生型のデータを設定する場合、対応する int の値を指定します。 Enum のそれぞれの値と内部的な int の値の対応については、UnityのAPIリファレンス等を参照してください。

Player Script では、この方法で更新したプロパティはスクリプトを実行中のプレイヤーにのみ反映されます。

Scriptable Item では、この方法で指定したプロパティの値はネットワークを介して同期されます。同期は即座に反映されない場合があること、および値に補間処理は適用されない事に注意してください。

Example

// Scriptable Item で SubNode のコンポーネントのプロパティにアクセスする例
let node = $.subNode("Cube");
let meshRenderer = node.getUnityComponent("MeshRenderer");
meshRenderer.unityProp.receiveShadows = false;

let transform = node.getUnityComponent("Transform");
transform.unityProp.localScale = new Vector3(2, 2, 2);

Example

// Player Script で PlayerLocalObject のコンポーネントのプロパティにアクセスする例
let imageObject = _.playerLocalObject("ImageObject");
let image = imageObject.getUnityComponent("Image");
image.unityProp.color = [1, 0, 0, 1];

let textObject = _.playerLocalObject("TextObject");
let textComponent = textObject.getUnityComponent("Text");
textComponent.unityProp.text = "Hello, World!";

Scriptable Item では、このAPIとそれ以外の方法で同一のプロパティを更新すると挙動が未定義になります。 このAPIと Animator 等で共通のプロパティを制御した場合の挙動は未定義です。 また、 SubNode.setPosition 等は内部的に Transform.localPosition を更新する処理であるため、 このAPIでの Transform.localPosition の変更と SubNode.setPosition を併用した場合も挙動は未定義です。

上述の未定義挙動を避けるため、Scriptable Item では以下のことに注意してください。

  • このAPIで更新するプロパティは、Animator等からは制御しないようにする
  • このAPI以外のAPIで更新できる値については、そのAPIから操作することを検討する

例えば、アイテムの位置を変更する場合はこのAPIではなく ClusterScript.setPosition の使用を検討してください。

また、 Scriptable Item では、プロパティをプレイヤー間で同期できるようにするため、編集可能なプロパティが制限されています。 各コンポーネントの enabled プロパティ、およびコンポーネントに応じた下記のプロパティが取得、設定できます。

  • AudioSource
    • bypassEffects
    • bypassListenerEffects
    • bypassReverbZones
    • dopplerLevel
    • loop
    • maxDistance
    • minDistance
    • mute
    • panStereo
    • pitch
    • playOnAwake
    • priority
    • spatialize
    • spatializePostEffects
  • BoxCollider
    • center
    • isTrigger
    • size
  • Button
    • interactable
    • transition
  • Camera
    • allowMSAA
    • backgroundColor
    • depth
    • farClipPlane
    • fieldOfView
    • focalLength
    • forceIntoRenderTexture
    • allowHDR
    • lensShift
    • nearClipPlane
    • useOcclusionCulling
    • orthographic
    • orthographicSize
    • stereoConvergence
    • stereoSeparation
  • Canvas
    • overridePixelPerfect
    • overrideSorting
    • pixelPerfect
    • planeDistance
    • normalizedSortingGridSize
  • CanvasGroup
    • alpha
    • blocksRaycasts
    • ignoreParentGroups
    • interactable
  • CapsuleCollider
    • center
    • height
    • isTrigger
    • radius
  • GridLayoutGroup
    • cellSize
    • childAlignment
    • constraint
    • constraintCount
    • spacing
    • startAxis
    • startCorner
  • HorizontalLayoutGroup
    • childAlignment
    • childControlHeight
    • childControlWidth
    • childForceExpandHeight
    • childForceExpandWidth
    • childScaleHeight
    • childScaleWidth
    • reverseArrangement
    • spacing
  • Image
    • color
    • fillAmount
    • fillCenter
    • fillClockwise
    • fillMethod
    • fillOrigin
    • maskable
    • pixelsPerUnitMultiplier
    • preserveAspect
    • raycastPadding
    • raycastTarget
    • type
    • useSpriteMesh
  • MeshCollider
    • convex
    • isTrigger
  • MeshRenderer
    • receiveShadows
    • rendererPriority
    • sortingOrder
  • PositionConstraint
    • constraintActive
    • translationAxis
    • translationAtRest
    • translationOffset
    • weight
  • PostProcessVolume
    • blendDistance
    • isGlobal
    • priority
    • weight
  • RawImage
    • color
    • maskable
    • raycastPadding
    • raycastTarget
  • RectTransform
    • anchorMax
    • anchorMin
    • anchoredPosition
    • pivot
    • localPosition
    • localScale
    • sizeDelta
  • Rigidbody
    • angularDrag
    • drag
    • isKinematic
    • mass
    • useGravity
  • RotationConstraint
    • constraintActive
    • rotationAxis
    • rotationAtRest
    • rotationOffset
    • weight
  • ScaleConstraint
    • constraintActive
    • scalingAxis
    • scaleAtRest
    • scaleOffset
    • weight
  • SkinnedMeshRenderer
    • receiveShadows
    • rendererPriority
    • skinnedMotionVectors
    • sortingOrder
    • updateWhenOffscreen
  • SphereCollider
    • center
    • isTrigger
    • radius
  • Text
    • text
    • color
    • maskable
    • raycastPadding
    • raycastTarget
  • Transform
    • localPosition
    • localRotation
    • localScale
  • VerticalLayoutGroup
    • childAlignment
    • childControlHeight
    • childControlWidth
    • childForceExpandHeight
    • childForceExpandWidth
    • childScaleHeight
    • childScaleWidth
    • reverseArrangement
    • spacing
  • VideoPlayer
    • sendFrameReadyEvents
    • isLooping
    • playOnAwake
    • playbackSpeed
    • skipOnDrop
    • targetCameraAlpha
    • waitForFirstFrame

Methods

  • Beta

    PlayerLocalObject.getUnityComponent で取得された Button コンポーネントに対してボタンの操作時に呼ばれるコールバック関数を登録します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    複数回同じ Button コンポーネントに対してコールバックを登録すると最後の登録のみが有効になります。

    コールバックはボタンを押し下げると isDown = true で呼び出され、その後にボタンを離すと isDown = false で呼び出されます。 このコールバックは isDown = true で呼ばれたあと、必ずしも isDown = false で呼ばれるとは限りません。 例えば、ボタンを押したままポインターをボタンの外側にずらした後に手を離すと isDown = false でのコールバックは呼ばれません。

    Parameters

    • callback: ((isDown: boolean) => void)

      ボタンの操作時に呼ばれるcallback関数

        • (isDown: boolean): void
        • Parameters

          • isDown: boolean

          Returns void

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが PlayableDirector, AudioSource, ParticleSystem, VideoPlayer のいずれかであれば、それらの再生を開始します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    ClusterScript.getUnityComponent または SubNode.getUnityComponent で取得したコンポーネントに対してこの関数を呼び出した場合、 PlayableDirector, AudioSource では、どのプレイヤーから見ても play() が実行された時刻から再生を開始したように見えます。 冒頭部分の再生はスキップされる場合があります。

    すでに play() した状態のままこの関数を呼び出した場合、再生を停止し、再度再生します。

    ParticleSystem に対してこの関数を呼び出すと、呼び出した ParticleSystem に加えて子要素に含まれるパーティクルも再生されます。 親要素と子要素がいずれも ParticleSystem を持つ場合、親要素のパーティクルのみで play()stop() を実行して下さい。 親子関係にある ParticleSystem の複数を play() したり stop() したりすると正しく再生されない場合があります。

    VideoPlayer でこの関数を使う場合、SourceVideo Clip を指定し、Render ModeMaterial Override にすることを推奨しています。 SourceVideo Clip になっている VideoPlayer では、どのプレイヤーからみても play() が実行された時刻から再生を開始したように見えます。 ただし冒頭部分の再生はスキップされる場合があります。また、動画のサイズやエンコード方法によっては再生開始までに時間がかかる場合があります。

    SourceURL を指定した場合、 play() を呼び出してから実際に再生を開始するまでに大きな遅延が発生します。また、プレイヤーごとに再生の開始タイミングや再生時刻が一致しなくなります。

    VideoPlayer の描画結果を Render Texture に表示する場合、再生を行っていないときの描画状態はOSやテクスチャの設定によって変化します。 VideoPlayer の再生中以外はテクスチャを非表示にすることを検討してください。

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが Animator である場合、その Animator のBoolのパラメーターを設定します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    存在しないパラメーターを指定した場合や、Boolではないパラメーターを指定した場合は何も起こりません。

    Parameters

    • id: string

      パラメーターの名前

    • value: boolean

      パラメーターの値

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが Animator である場合、その Animator のFloatのパラメーターを設定します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    存在しないパラメータを指定した場合や、Floatではないパラメーターを指定した場合は何も起こりません。

    Parameters

    • id: string

      パラメーターの名前

    • value: number

      パラメーターの値

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが Animator である場合、その Animator のIntegerのパラメーターを設定します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    存在しないパラメーターを指定した場合や、Integerではないパラメーターを指定した場合は何も起こりません。

    Parameters

    • id: string

      パラメーターの名前

    • value: number

      パラメーターの値

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが Animator である場合、その Animator のTriggerをセットします。 それ以外のコンポーネントに対して呼び出した場合、例外になります。

    存在しないパラメーターを指定した場合や、Triggerではないパラメーターを指定した場合は何も起こりません。

    Parameters

    • id: string

      パラメーターの名前

    Returns void

  • Beta

    このハンドルが操作対象とするコンポーネントが PlayableDirector, AudioSource, ParticleSystem, VideoPlayer のいずれかであれば、それらの再生を停止します。 それ以外のコンポーネントに対して呼び出した場合、例外になります。 PlayableDirector, VideoPlayer に対してこの関数を呼び出すと、再生を停止するとともに、再生時刻が初期状態にリセットされます。

    ParticleSystem に対してこの関数を呼び出すと、呼び出した ParticleSystem に加えて子要素に含まれるパーティクルも停止します。 親要素と子要素がいずれも ParticleSystem を持つ場合、親要素のパーティクルのみで play()stop() を実行して下さい。 親要素と子要素のパーティクルを同時に play() したり stop() したりすると正しく再生されない場合があります。

    Returns void

Generated using TypeDoc