MoCHI で GameObject に書けるコンポーネントの一覧です。属性の名前と既定値は、Unity 2022.3.22f1 で AddComponent したコンポーネントから採っています。
コンポーネントは 147 種類で、7 の分類に分けてあります。
コンポーネントは、GameObject を作る要素の直下にタグで書きます(コンポーネントのタグ)。
<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 name="Lamp" position="0 2 0">
<Light type="Spot" color="#FFE6CC" intensity="2.5" range="6" spotAngle="45" shadows="Soft" lightmapBakeType="Baked"/>
<AudioSource playOnAwake="false" volume="0.5" loop="true" spatialBlend="1" minDistance="1" maxDistance="20"/>
| |
|---|
| 属性の名前 | C# のプロパティの名前です。対応するプロパティが無い値は、Unity が保存する欄の名前から m_ を外した名前です |
| 書かない属性 | Unity の AddComponent で足したときの値のままです |
TextMeshPro の fontAsset | fontSharedMaterial を書かなければ、材質もそのフォントのアセットの材質になります |
| 自動で足すコンポーネント | 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 |
<Object name="Anchor" position="0 2 0"/>
<ConstraintSource sourceTransform="/Anchor"/>
<LOD screenRelativeHeight="0.5" renderers="Near"/>
<LOD screenRelativeHeight="0.1" renderers="Far"/>
<Object name="Near"><MeshFilter mesh="builtin:Sphere"/><MeshRenderer/></Object>
<Object name="Far"><MeshFilter mesh="builtin:Cube"/><MeshRenderer/></Object>
<Burst time="0" count="20"/>
<Burst time="1" minCount="5" maxCount="10" cycleCount="3" repeatInterval="0.5"/>
| 型 | 書き方 |
|---|
float | 数(1.5)。Infinity・-Infinity も書けます |
int | 整数(3) |
bool | true・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 つ以上 |
LayerMask | Everything・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 です |
| UnityEvent | onClick="../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 にあった呼び出しを置き換えます |
<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">
<Button targetGraphic="."/>
<Object name="Label" sizeDelta="160 40">
<TextMeshProUGUI text="Menu"/>
配列・置いた prefab の中への参照・レイヤーの名前・Infinity は次のように書きます。
<Prefab src="../Kit/KitFrame.prefab" name="Frame"/>
<MeshFilter mesh="builtin:Quad"/>
<MeshRenderer materials="../Art/Frame.mat; builtin:Default-Material"/>
<VRCObjectPool Pool="Ball1; Ball2; ../Frame/Plate"/>
<VRCStation stationEnterPlayerLocation="../Frame/Mount"/>
<Camera cullingMask="Default; Water; Pickup"/>
<HingeJoint breakForce="Infinity"/>
アセットの種類は、ファイルの .meta で確認します。種類が違うと MOCHI2008、.meta が無いと MOCHI2009 になります。
| 型 | 指せるファイル |
|---|
Material | .mat |
AudioClip | Unity が AudioClip としてインポートした音声のファイル |
Texture | Unity が Texture としてインポートした画像(.png など)・Texture2D の .asset・.renderTexture |
Texture2D | Unity が Texture としてインポートした画像(.png など)・Texture2D の .asset |
Sprite | Texture Type が Sprite で、Sprite Mode が Single の画像 |
RenderTexture | .renderTexture |
Font | Unity が Font としてインポートしたフォントのファイル(.ttf など) |
RuntimeAnimatorController | .controller |
AnimationClip | .anim |
PhysicMaterial | .physicMaterial |
VideoClip | Unity が VideoClip としてインポートした動画のファイル |
Shader | Unity が Shader としてインポートしたシェーダーのファイル |
TextAsset | Unity が TextAsset としてインポートしたファイル(.txt・.bytes・.json・.csv など) |
TMP_FontAsset | TextMeshPro のフォントのアセット(.asset) |
TMP_ColorGradient | TextMeshPro のカラーグラデーションのアセット(.asset) |
TMP_SpriteAsset | TextMeshPro のスプライトのアセット(.asset) |
TMP_StyleSheet | TextMeshPro のスタイルシートのアセット(.asset) |
Mesh | Mesh の .asset と、モデルのファイル(.fbx など)の中の Mesh(Chair.fbx#Seat のように # の後にメッシュの名前。1 つだけなら名前は書かなくてよい) |
| 組み込みのアセット | 型 |
|---|
builtin:Cube・builtin:Cylinder・builtin:Sphere・builtin:Capsule・builtin:Plane・builtin:Quad | Mesh |
builtin:Default-Material | Material |
| 書いた物 | 扱い |
|---|
| VRChat がワールドで許すコンポーネントの一覧に無いコンポーネント | MOCHI1010 になります。AudioListener は一覧に無いが、アップロードしたワールドで動くことを確認してあるので書けます |
Audio の Filter に AudioSource が無い GameObject | MOCHI1011 になります。Unity が足さないためです |
| 上の一覧に無い名前のタグ | 部品の名前として読みます。その名前の部品が無ければ MOCHI3001 になります |
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 |