コンテンツにスキップ

コンポーネントの一覧

MoCHI で GameObject に書けるコンポーネントの一覧です。属性の名前と既定値は、Unity 2022.3.22f1 で AddComponent したコンポーネントから採っています。

コンポーネントは 147 種類で、7 の分類に分けてあります。

分類数コンポーネント
物理のコンポーネント14BoxCollider・CapsuleCollider・CharacterJoint・Cloth・ConfigurableJoint・ConstantForce・FixedJoint・HingeJoint・MeshCollider・Rigidbody・SphereCollider・SpringJoint・TerrainCollider・WheelCollider
描画のコンポーネント33BillboardRenderer・Camera・FlareLayer・Halo・LODGroup・LensFlare・Light・LightProbeGroup・LightProbeProxyVolume・LineRenderer・MeshFilter・MeshRenderer・OcclusionArea・OcclusionPortal・ParticleSystem・ParticleSystemForceField・ParticleSystemRenderer・PostProcessDebug・PostProcessLayer・PostProcessVolume・Projector・ReflectionProbe・SkinnedMeshRenderer・Skybox・SortingGroup・SpriteMask・SpriteRenderer・Terrain・TextMesh・Tilemap・TilemapRenderer・TrailRenderer・Tree
音のコンポーネント9AudioChorusFilter・AudioDistortionFilter・AudioEchoFilter・AudioHighPassFilter・AudioListener・AudioLowPassFilter・AudioReverbFilter・AudioReverbZone・AudioSource
UI のコンポーネント34AspectRatioFitter・BaseInput・Button・Canvas・CanvasGroup・CanvasRenderer・CanvasScaler・ContentSizeFitter・Dropdown・EventSystem・EventTrigger・GraphicRaycaster・GridLayoutGroup・HorizontalLayoutGroup・Image・InputField・LayoutElement・Mask・Outline・PhysicsRaycaster・PositionAsUV1・RawImage・RectMask2D・ScrollRect・Scrollbar・Selectable・Shadow・Slider・StandaloneInputModule・Text・Toggle・ToggleGroup・TouchInputModule・VerticalLayoutGroup
TextMeshPro のコンポーネント8TMP_Dropdown・TMP_InputField・TMP_ScrollbarEventHandler・TMP_SelectionCaret・TMP_SpriteAnimator・TextContainer・TextMeshPro・TextMeshProUGUI
VRChat のコンポーネント36ONSPAudioSource・VRCAVProVideoPlayer・VRCAVProVideoScreen・VRCAVProVideoSpeaker・VRCAimConstraint・VRCAvatarPedestal・VRCCameraDollyAnimation・VRCCameraDollyPath・VRCCameraDollyPathPoint・VRCContactReceiver・VRCContactSender・VRCEnablePersistence・VRCInputFieldKeyboardOverride・VRCLookAtConstraint・VRCMidiListener・VRCMidiPlayer・VRCMirrorReflection・VRCObjectPool・VRCObjectSync・VRCParentConstraint・VRCPhysBone・VRCPhysBoneCollider・VRCPhysBoneRoot・VRCPickup・VRCPlayerObject・VRCPortalMarker・VRCPositionConstraint・VRCRotationConstraint・VRCScaleConstraint・VRCSceneDescriptor・VRCSpatialAudioSource・VRCStation・VRCUiShape・VRCUnityVideoPlayer・VRCUrlInputField・VRCVisualDamage
その他のコンポーネント13AimConstraint・Animator・LookAtConstraint・NavMeshAgent・NavMeshObstacle・OffMeshLink・ParentConstraint・PlayableDirector・PositionConstraint・RotationConstraint・ScaleConstraint・VideoPlayer・WindZone

コンポーネントは、GameObject を作る要素の直下にタグで書きます(コンポーネントのタグ)。

Assets/Example/Kiosk.mochi.xml
<Kiosk prefab="true">
<Object name="Counter" position="0 0.5 0" static="batching lighting">
<MeshFilter mesh="builtin:Cube"/>
<MeshRenderer material="builtin:Default-Material" shadowCastingMode="TwoSided" receiveShadows="false"/>
<BoxCollider size="1 1 1" center="0 0 0" isTrigger="false"/>
</Object>
<Object name="Lamp" position="0 2 0">
<Light type="Spot" color="#FFE6CC" intensity="2.5" range="6" spotAngle="45" shadows="Soft" lightmapBakeType="Baked"/>
</Object>
<Object name="Speaker">
<AudioSource playOnAwake="false" volume="0.5" loop="true" spatialBlend="1" minDistance="1" maxDistance="20"/>
</Object>
</Kiosk>
属性の名前C# のプロパティの名前です。対応するプロパティが無い値は、Unity が保存する欄の名前から m_ を外した名前です
書かない属性Unity の AddComponent で足したときの値のままです
TextMeshPro の fontAssetfontSharedMaterial を書かなければ、材質もそのフォントのアセットの材質になります
自動で足すコンポーネントUnity が RequireComponent で一緒に足すコンポーネントは、書かなくても足します。書いた場合はそれを使います
一緒に変わる値Unity が一緒に変える値は、MoCHI も変えます。例えば Rigidbody の centerOfMass を書くと automaticCenterOfMass は false になり、リバーブの値を書くと reverbPreset は User になります
範囲の外の値Unity が読み込むときに範囲の中へ寄せる値は MOCHI1009 です(AudioSource の volume に 1.5 を書くと、Unity は 1 にします)。範囲は属性の表の「選べる値」の列にあります。他の属性の値で決まる範囲(Slider の value は minValue から maxValue)は確認しません
UI のコンポーネント書いた GameObject は RectTransform になります(RectTransform を持つ GameObject)
書き方コンポーネントの要素の中に、C# の構造体の名前の子の要素を並べます。属性は C# のフィールドの名前で、並べた順が配列の順です
書かないとき雛形の既定の並びのままです。1 つでも書くと、書いた物で置き換えます
物を指す属性同じ prefab の中の物へのパスです(同じ prefab の中の参照)。renderers は ; で区切ります
ParentConstraint の補正translationOffsets・rotationOffsets は <ConstraintSource> と同じ数を書きます。書かなければ、同じ数の 0 0 0 です
<ConstraintSource> の weight書かなければ 1 です(Inspector で足したときと同じ)
<LOD>8 つまでです。screenRelativeHeight は後ろの <LOD> ほど小さくします
<Burst> の数count か、minCount と maxCount の組のどちらかを書きます。emissionModule.burstCount は MoCHI が書くので、書きません
置いた prefab の中のコンポーネント既存のコンポーネントの変更(<Prefab>・<At> の直下)でも書けます。書いた配列は、置いた prefab の元の並びを丸ごと置き換えます
実行時に変わる値まだ書けません(MOCHI9001)
コンポーネント子の要素属性
AimConstraint<ConstraintSource>sourceTransform・weight
LookAtConstraint<ConstraintSource>sourceTransform・weight
ParentConstraint<ConstraintSource>sourceTransform・weight
PositionConstraint<ConstraintSource>sourceTransform・weight
RotationConstraint<ConstraintSource>sourceTransform・weight
ScaleConstraint<ConstraintSource>sourceTransform・weight
LODGroup<LOD>screenRelativeHeight・fadeTransitionWidth・renderers
Dropdown<OptionData>text・image
TMP_Dropdown<OptionData>text・image
ParticleSystem<Burst>time・count・minCount・maxCount・cycleCount・repeatInterval・probability
Assets/Example/Lamp.mochi.xml
<Lamp prefab="true">
<Object name="Anchor" position="0 2 0"/>
<Object name="Shade">
<ParentConstraint>
<ConstraintSource sourceTransform="/Anchor"/>
</ParentConstraint>
<LODGroup>
<LOD screenRelativeHeight="0.5" renderers="Near"/>
<LOD screenRelativeHeight="0.1" renderers="Far"/>
</LODGroup>
<Object name="Near"><MeshFilter mesh="builtin:Sphere"/><MeshRenderer/></Object>
<Object name="Far"><MeshFilter mesh="builtin:Cube"/><MeshRenderer/></Object>
<ParticleSystem>
<Burst time="0" count="20"/>
<Burst time="1" minCount="5" maxCount="10" cycleCount="3" repeatInterval="0.5"/>
</ParticleSystem>
</Object>
</Lamp>
型書き方
float数(1.5)。Infinity・-Infinity も書けます
int整数(3)
booltrue・false
string文字列
Vector2空白で区切った 2 つの数(0.5 1)
Vector3空白で区切った 3 つの数(0 1.5 0)
Vector4空白で区切った 4 つの数
Quaternion空白で区切った 4 つの数(x y z w)
Color#RRGGBB・#RRGGBBAA
Rect空白で区切った 4 つの数(x y width height・0 0 1 1)
列挙列挙の名前 1 つ。大文字と小文字を区別します
列挙(組み合わせ)列挙の名前を空白で区切って 1 つ以上
LayerMaskEverything・Nothing・; で区切ったレイヤーの名前(Default; Water)・レイヤーのビットを表す整数。名前はプロジェクトのレイヤー(Project Settings の Tags and Layers)で、無い名前は MOCHI1009 です
UnityEventパス:イベント名 を ; で区切って 1 つ以上(T# スクリプトを持つ部品の SendCustomEvent を呼ぶ)
配列要素を全部、; で区切って書きます(Red.mat; Blue.mat)。空の値は空の配列です。要素はそれぞれの型の書き方で書きます
アセットの型(Material など)プロジェクトのアセットへのパス(アセットの参照)
型(同じ prefab の中)同じ prefab の中の GameObject へのパス(同じ prefab の中の参照)
相対パスコンポーネントを書いた GameObject から: 子は Bg、親の兄弟は ../Bg、自分は . です
絶対パス/ で始めます(/Panel/Bg)。根は書いたファイルのルートです(部品の中なら部品を使った所の GameObject)
名前GameObject の key(無ければ名前)で探します。同じ名前の兄弟が 2 つあるとエラーになります(MOCHI4001)
指す物パスの先の GameObject の、属性の型のコンポーネントです。Graphic の属性は Image も指せます(型を継ぐ物)。無ければ MOCHI2016、パスの先が無ければ MOCHI2015 です
UnityEventonClick="../Door:Open; /Sound:Play" のように パス:イベント名 を ; で区切って書きます。指す先は T# スクリプトを持つ部品で、その UdonBehaviour の SendCustomEvent を呼びます
置いた prefab の中パスは <Prefab> を通って、prefab の中の GameObject の名前でたどれます(../Frame/Mount)。<Prefab> の名前までなら prefab のルートです。UnityEvent は、prefab の中の UdonBehaviour も指せます
部品へ渡す部品の Object の props で、使う所から物を渡せます。部品の中で targetGraphic="{face}"・onClick="{target}:Open" と書くと、パスは使う所から数えます(props の値)。指す先が無いときは、パスを書いた使う所を指してエラーになります
prefab の中の変更から<Prefab>・<At> の中のコンポーネントの変更からも指せます。相対パスは、コンポーネントを変える prefab の中の物から数えます。UnityEvent は prefab にあった呼び出しを置き換えます
Assets/Example/Menu.mochi.xml
<Menu prefab="true">
<Object name="Panel" position="0 1.5 2" scale="0.001 0.001 0.001" sizeDelta="400 500">
<Canvas renderMode="WorldSpace"/>
<ScrollRect content="Content" viewport="."/>
<Object name="Content" anchorMin="0 1" anchorMax="1 1" pivot="0.5 1" sizeDelta="0 400">
<VerticalLayoutGroup spacing="8"/>
<Object name="Close" sizeDelta="160 40">
<Image color="#FF6060"/>
<Button targetGraphic="."/>
</Object>
<Object name="Label" sizeDelta="160 40">
<TextMeshProUGUI text="Menu"/>
</Object>
</Object>
</Object>
</Menu>

配列・置いた prefab の中への参照・レイヤーの名前・Infinity は次のように書きます。

Assets/Example/Arcade.mochi.xml
<Arcade prefab="true">
<Prefab src="../Kit/KitFrame.prefab" name="Frame"/>
<Object name="Sign">
<MeshFilter mesh="builtin:Quad"/>
<MeshRenderer materials="../Art/Frame.mat; builtin:Default-Material"/>
</Object>
<Object name="Balls">
<VRCObjectPool Pool="Ball1; Ball2; ../Frame/Plate"/>
<Object name="Ball1"/>
<Object name="Ball2"/>
</Object>
<Object name="Seat">
<VRCStation stationEnterPlayerLocation="../Frame/Mount"/>
</Object>
<Object name="Camera">
<Camera cullingMask="Default; Water; Pickup"/>
</Object>
<Object name="Hinge">
<Rigidbody/>
<HingeJoint breakForce="Infinity"/>
</Object>
</Arcade>

アセットの種類は、ファイルの .meta で確認します。種類が違うと MOCHI2008、.meta が無いと MOCHI2009 になります。

型指せるファイル
Material.mat
AudioClipUnity が AudioClip としてインポートした音声のファイル
TextureUnity が Texture としてインポートした画像(.png など)・Texture2D の .asset・.renderTexture
Texture2DUnity が Texture としてインポートした画像(.png など)・Texture2D の .asset
SpriteTexture Type が Sprite で、Sprite Mode が Single の画像
RenderTexture.renderTexture
FontUnity が Font としてインポートしたフォントのファイル(.ttf など)
RuntimeAnimatorController.controller
AnimationClip.anim
PhysicMaterial.physicMaterial
VideoClipUnity が VideoClip としてインポートした動画のファイル
ShaderUnity が Shader としてインポートしたシェーダーのファイル
TextAssetUnity が TextAsset としてインポートしたファイル(.txt・.bytes・.json・.csv など)
TMP_FontAssetTextMeshPro のフォントのアセット(.asset)
TMP_ColorGradientTextMeshPro のカラーグラデーションのアセット(.asset)
TMP_SpriteAssetTextMeshPro のスプライトのアセット(.asset)
TMP_StyleSheetTextMeshPro のスタイルシートのアセット(.asset)
MeshMesh の .asset と、モデルのファイル(.fbx など)の中の Mesh(Chair.fbx#Seat のように # の後にメッシュの名前。1 つだけなら名前は書かなくてよい)
組み込みのアセット型
builtin:Cube・builtin:Cylinder・builtin:Sphere・builtin:Capsule・builtin:Plane・builtin:QuadMesh
builtin:Default-MaterialMaterial
書いた物扱い
VRChat がワールドで許すコンポーネントの一覧に無いコンポーネントMOCHI1010 になります。AudioListener は一覧に無いが、アップロードしたワールドで動くことを確認してあるので書けます
Audio の Filter に AudioSource が無い GameObjectMOCHI1011 になります。Unity が足さないためです
上の一覧に無い名前のタグ部品の名前として読みます。その名前の部品が無ければ MOCHI3001 になります
書き方番号例
<CharacterController>MOCHI1010component-not-allowed
AudioSource の無い <AudioLowPassFilter>MOCHI1011audio-filter-alone
AudioSource の volume に 1.5MOCHI1009value-out-of-range
プロジェクトに無いレイヤーの名前MOCHI1009layer-name-unknown

VRChat がワールドで許していない Unity のコンポーネントは次の 53 種類です。

名前
Animation・AreaEffector2D・ArmModel・ArticulationBody・BoxCollider2D・BuoyancyEffector2D・CapsuleCollider2D・CharacterController・CircleCollider2D・CompositeCollider2D・ConstantForce2D・CustomCollider2D・DistanceJoint2D・EdgeCollider2D・FixedJoint2D・FrictionJoint2D・HingeJoint2D・InputSystemUIInputModule・MultiplayerEventSystem・NavMeshLink・NavMeshModifier・NavMeshModifierVolume・NavMeshSurface・NetworkView・OnScreenButton・OnScreenStick・PanelEventHandler・PanelRaycaster・Physics2DRaycaster・PlatformEffector2D・PlayerInput・PlayerInputManager・PointEffector2D・PolygonCollider2D・RelativeJoint2D・Rigidbody2D・SignalReceiver・SliderJoint2D・SpringJoint2D・SpriteShapeRenderer・StreamingController・SurfaceEffector2D・SwingArmModel・TargetJoint2D・TilemapCollider2D・TouchSimulation・TrackedDeviceRaycaster・TrackedPoseDriver・TransitionArmModel・UIDocument・VirtualMouseInput・VisualEffect・WheelJoint2D