Beta
Readonly
Beta
unityUnityコンポーネントのプロパティを取得、または設定するためのハンドルを取得します。
このハンドルからプロパティを指定する場合、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
では、この方法で指定したプロパティの値はネットワークを介して同期されます。同期は即座に反映されない場合があること、および値に補間処理は適用されない事に注意してください。
// 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);
// 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ではなく ClusterScript.setPosition の使用を検討してください。
また、 Scriptable Item
では、プロパティをプレイヤー間で同期できるようにするため、編集可能なプロパティが制限されています。
各コンポーネントの enabled
プロパティ、およびコンポーネントに応じた下記のプロパティが取得、設定できます。
Beta
PlayerLocalObject.getUnityComponent で取得された Button
コンポーネントに対してボタンの操作時に呼ばれるコールバック関数を登録します。
それ以外のコンポーネントに対して呼び出した場合、例外になります。
複数回同じ Button
コンポーネントに対してコールバックを登録すると最後の登録のみが有効になります。
コールバックはボタンを押し下げると isDown = true
で呼び出され、その後にボタンを離すと isDown = false
で呼び出されます。
このコールバックは isDown = true
で呼ばれたあと、必ずしも isDown = false
で呼ばれるとは限りません。
例えば、ボタンを押したままポインターをボタンの外側にずらした後に手を離すと isDown = false
でのコールバックは呼ばれません。
ボタンの操作時に呼ばれるcallback関数
Beta
このハンドルが操作対象とするコンポーネントが PlayableDirector
, AudioSource
, ParticleSystem
, VideoPlayer
のいずれかであれば、それらの再生を開始します。
それ以外のコンポーネントに対して呼び出した場合、例外になります。
ClusterScript.getUnityComponent または SubNode.getUnityComponent で取得したコンポーネントに対してこの関数を呼び出した場合、
PlayableDirector
, AudioSource
では、どのプレイヤーから見ても play()
が実行された時刻から再生を開始したように見えます。
冒頭部分の再生はスキップされる場合があります。
すでに play()
した状態のままこの関数を呼び出した場合、再生を停止し、再度再生します。
ParticleSystem
に対してこの関数を呼び出すと、呼び出した ParticleSystem
に加えて子要素に含まれるパーティクルも再生されます。
親要素と子要素がいずれも ParticleSystem
を持つ場合、親要素のパーティクルのみで play()
や stop()
を実行して下さい。
親子関係にある ParticleSystem
の複数を play()
したり stop()
したりすると正しく再生されない場合があります。
VideoPlayer
でこの関数を使う場合、Source
に Video Clip
を指定し、Render Mode
は Material Override
にすることを推奨しています。
Source
が Video Clip
になっている VideoPlayer
では、どのプレイヤーからみても play()
が実行された時刻から再生を開始したように見えます。
ただし冒頭部分の再生はスキップされる場合があります。また、動画のサイズやエンコード方法によっては再生開始までに時間がかかる場合があります。
Source
に URL
を指定した場合、 play()
を呼び出してから実際に再生を開始するまでに大きな遅延が発生します。また、プレイヤーごとに再生の開始タイミングや再生時刻が一致しなくなります。
VideoPlayer
の描画結果を Render Texture
に表示する場合、再生を行っていないときの描画状態はOSやテクスチャの設定によって変化します。
VideoPlayer
の再生中以外はテクスチャを非表示にすることを検討してください。
Beta
このハンドルが操作対象とするコンポーネントが PlayableDirector
, AudioSource
, ParticleSystem
, VideoPlayer
のいずれかであれば、それらの再生を停止します。
それ以外のコンポーネントに対して呼び出した場合、例外になります。
PlayableDirector
, VideoPlayer
に対してこの関数を呼び出すと、再生を停止するとともに、再生時刻が初期状態にリセットされます。
ParticleSystem
に対してこの関数を呼び出すと、呼び出した ParticleSystem
に加えて子要素に含まれるパーティクルも停止します。
親要素と子要素がいずれも ParticleSystem
を持つ場合、親要素のパーティクルのみで play()
や stop()
を実行して下さい。
親要素と子要素のパーティクルを同時に play()
したり stop()
したりすると正しく再生されない場合があります。
Generated using TypeDoc
オブジェクトにアタッチされたUnityコンポーネントを操作するためのハンドルです。
このハンドルは下記の関数で取得できます。
ClusterScript.getUnityComponent または SubNode.getUnityComponent で取得した
UnityComponent
への操作は、アイテムの見た目や振る舞いを変更します。この変更はどのプレイヤーからも見る事ができます。PlayerLocalObject.getUnityComponent で取得した
UnityComponent
への操作は、そのプレイヤーから見たコンポーネントの見た目や振る舞いを変更します。いずれの関数でも、
type
としては特定のコンポーネント名のみが指定できます。 以下はサポートされているコンポーネント名の一覧です。