🍜
UdonSharpで配列をソートする
概要
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);
}
}
結果
参考
Discussion