🍜

UdonSharpで配列をソートする

2025/03/06に公開

概要

VRChat SDK - Worlds 3.7.1からArray.Sort()が使えるようになっていたので、そのサンプルを紹介します。

Array.Sort()に渡す配列をArrayでキャストする必要がありました。

環境

  • Unity 2022.3.22f1
  • VRChat SDK - Base 3.7.6
  • VRChat SDK - Worlds 3.7.6

サンプルコード

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
using System;

public class ArraySortTest : UdonSharpBehaviour
{
    void Start()
    {
        // ソートしたい配列
        int[] array = new int[] {4, 2, 6, 9, 0, 3, 1, 5, 8, 7};

        // ソートしたい配列のインデックス生成
        int[] index = new int[array.Length];
        for (int i = 0; i < array.Length; i++)
        {
            index[i] = i;
        }

        // ソートする
        Array.Sort((Array)array, (Array)index);   // Arrayでキャストが必要
        //Array.Reverse(array);                   // 逆順にもできる
        //Array.Reverse(index);                   // 逆順にもできる

        // ソート後の配列の中身表示
        string str_array = "";
        for (int i = 0; i < array.Length; i++)
        {
            str_array += array[i].ToString() + " ";
        }
        Debug.Log("array: " + str_array);

        // ソート後の配列のインデックス表示
        string str_index = "";
        for (int i = 0; i < index.Length; i++)
        {
            str_index += index[i].ToString() + " ";
        }
        Debug.Log("index: " + str_index);
    }
}

結果

参考

https://creators.vrchat.com/releases/release-3-7-1/#new-features
https://feedback.vrchat.com/udon/p/arraysort

Discussion