| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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<ShuffleDeckCode>() != null)
- {
- ShuffleDeckCode shuffleDeckCode = obj.GetComponent<ShuffleDeckCode>();
- 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; // 入れ替え元に預けておいた要素を与える
- }
- }
- }
|