Skip to content

サンプルコード ​

ShirasUdonAssembly JSONのサンプルです。各ページでJSONを閲覧・コピーできます。

VRChatワールドにJoinすると、サンプルを選んでShirasUdonVMで実行できます。

CollatzSequence ​

27から始め、偶数なら2で割り、奇数なら3倍して1を足すCollatz数列を1まで出力します。分岐と繰り返しのサンプルです。

DecimalArithmetic ​

整数からDecimalを実行時生成し、(10 + 2) × 3 - 5を2で割る加減乗除を行います。計算式とDecimal結果15.5をログへ出力します。

EnumIncrement ​

VRCTweenEase.LinearをSystemInt32へCOPYし、1を加算してVRCTweenEaseへCOPYで戻します。実行すると変更前のLinearと変更後のInSineをログへ出力します。

FibonacciSequence ​

フィボナッチ数列の先頭20項を出力します。複数のローカル変数相当の値を更新するループのサンプルです。

FizzBuzz1To100 ​

1から100までを走査し、3の倍数をFizz、5の倍数をBuzz、両方の倍数をFizzBuzzとして出力します。剰余、比較、条件分岐、ループのサンプルです。

GreatestCommonDivisor ​

ユークリッドの互除法で1071と462の最大公約数21を求めます。剰余を使ったwhileループのサンプルです。

IncreaseLocalPlayerMovement ​

AddSpeedはローカルプレイヤーのWalk Speed、Run Speed、Strafe Speedを現在値から1 m/s速くします。AddJumpは現在のGravity Strengthを考慮してジャンプ到達高度が約1 m高くなるようJump Impulseを変更します。Resetは各速度とJump ImpulseをVRChat標準値へ戻します。

MoveFloorUpAndDown ​

_startでGameObject.Findを使ってFloorを取得し、開始時のローカルY座標を基準として-1mから+1mまでVRCTweenで上下に動かし続けます。_stopで保持中のTweenHandleをKillし、_resetでTweenを停止して_start時の初期位置へ戻します。移動は各クライアントでローカルに実行されます。

PrimeNumbersUpTo100 ​

100以下の素数を列挙します。候補ごとの内側ループ、剰余判定、真偽値による分岐を含むサンプルです。

PropertyGetterSetterTests ​

Vector3.x、Color.a、Rect.widthについて、コンストラクタで値型を生成し、getterで変更前の値を取得、setterで変更、getterで変更後の値を再取得してログへ出力します。__SystemVoidを省略するsetterと明記するsetterの両方を検証します。

RandomArraySort ​

0以上1000未満の乱数を100個生成して出力し、VM命令で実装したバブルソートによる昇順、System.Array.Reverse APIによる降順、System.Array.Sort APIによる昇順の順で出力します。各結果はDebug.LogとOutput Canvasへ表示します。

RotateFloorSlowly ​

_startでGameObject.Findを使ってFloorを取得し、VRCTweenでY軸をゆっくり無限回転させます。_stopで保持中のTweenHandleをKillします。回転は各クライアントでローカルに実行されます。

StructDefaultValueTests ​

Vector3のdefault(T)初期化を検証します。ロード直後の最初の実行で各値のdefaultをログ出力した後、APIの戻り値、コンストラクタ、default値への直接操作という3つの経路で変更し、結果を再度ログ出力します。再実行時はHeapが維持されるため、変更後の値から開始します。

Sum1To100 ​

1から100までの整数を加算し、sum = 5050をDebug.Logへ出力するサンプル。_startを実行するたびにローカル変数相当のsとiを初期化します。

Sum1To1000 ​

1から1000までの整数を加算し、sum = 500500をDebug.Logへ出力するサンプル。_startを実行するたびにローカル変数相当のsとiを初期化します。

Sum1To10000 ​

1から10000までの整数を加算し、sum = 50005000をDebug.Logへ出力するサンプル。_startを実行するたびにローカル変数相当のsとiを初期化します。

Texture2DLoadRawTextureData ​

Base64文字列をbyte[]へ変換し、Width=4、Height=4、Format=DXT1Crunched、指定したMipmapでTexture2Dを作成します。その後、LoadRawTextureDataで画像データを読み込み、Applyします。実行前に__base64の文字列と__mipmapのtrue/falseを手書きで指定してください。

TypeOfInt ​

object.GetType()の結果と、型テーブルからロードしたtypeof(int)相当のSystemType定数を比較します。結果はTrueになります。

Vector3Operations ​

Vector3(1,2,3)とVector3(4,5,6)を生成し、加算、距離、正規化をExternで実行して結果を出力します。

WriteToResultDisplay ​

_startでShirasUdonResultTextを検索し、UnityEngine.UI.Textを取得して実行結果を書き込みます。対象GameObjectまたはTextが見つからない場合は何も行いません。