Appearance
サンプルコード
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が見つからない場合は何も行いません。
