using System.Collections.Generic; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; using UnityEngine.SceneManagement; public class AttachShuffledNumberIDs : MonoBehaviour { [MenuItem("Window/Attach/AttachShuffledNumberIDs")] static void Attach_ShuffledNumberIDs() { UnityEngine.Random.InitState(1145141919); foreach (GameObject obj in Selection.gameObjects) { if (obj.GetComponent() != null) { ShuffleDeckCode shuffleDeckCode = obj.GetComponent(); shuffleDeckCode.ShuffledNumberIDs = new int[ConvertBinaryNumber.numbers.Length]; for(int i=0;i< shuffleDeckCode.ShuffledNumberIDs.Length;i++) { shuffleDeckCode.ShuffledNumberIDs[i] = i; } Shuffle(shuffleDeckCode.ShuffledNumberIDs); EditorGUI.BeginChangeCheck(); if (EditorGUI.EndChangeCheck()) { var scene = SceneManager.GetActiveScene(); EditorSceneManager.MarkSceneDirty(scene); } return; } } } static void Shuffle(int[] numbers) { for (int i = 0; i < numbers.Length; i++) { int temp = numbers[i]; // 現在の要素を預けておく int randomIndex = UnityEngine.Random.Range(0, numbers.Length); // 入れ替える先をランダムに選ぶ numbers[i] = numbers[randomIndex]; // 現在の要素に上書き numbers[randomIndex] = temp; // 入れ替え元に預けておいた要素を与える } } }