質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

829閲覧

ランダムにした配列を他のスクリプトで使用したい。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/05/27 10:36

編集2019/05/27 12:06

前提・実現したいこと

ランダムにした配列を他のスクリプトで使用したいです。
ColorChangeで作成した、ランダムな配列をLogScriptで使用する方法が知りたいです。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

public class ColorChange : MonoBehaviour
{
public GameObject[] buttons;

public float timeOut=1; private float timeElapsed; bool one; int i; public static int[] ary = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; // Start is called before the first frame update void Start() { one = true; } // Update is called once per frame void Update() { //重複なしランダム配列-------------------------------------------- if (one) { System.Random rng = new System.Random(); int n = ary.Length; while (n > 1) { n--; int k = rng.Next(n + 1); int tmp = ary[k]; ary[k] = ary[n]; ary[n] = tmp; } one = false; } //重複なしランダム配列ここまで--------------------------------------- }

}


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class LogScript : MonoBehaviour
{
ColorChange script;

int[] log = new int[] { 9, 9, 9, 9, 9, 9, 9, 9, 9 }; string datetimeStr1 = System.DateTime.Now.ToString("yyyy年MM月dd日"); string datetimeStr2 = System.DateTime.Now.ToString("yyyy年MM月dd日HH時mm分ss秒"); private void Start() { log[0] = ColorChange.ary[0]; log[1] = ColorChange.ary[1]; log[2] = ColorChange.ary[2]; if (File.Exists("log") == false) { Directory.CreateDirectory("log"); } if (File.Exists("log/" + datetimeStr1 + "") == false) { Directory.CreateDirectory("log/" + datetimeStr1 + ""); } WriteLog(); } void WriteLog() { StreamWriter sw; sw = new StreamWriter("log/" + datetimeStr1 + "/" + datetimeStr2 + ".csv", true); sw.WriteLine(log[0]); sw.WriteLine(log[1]); sw.WriteLine(log[2]); sw.Close(); }

}

ここに言語を入力 ``` ここに言語を入力 ``` ここに言語を入力 ``` ここに言語を入力 ``` リスト ``````ここに言語名を入力 ソースコードC# ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。 ### 前提・実現したいこと ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ソースコード ``` ### 試したこと 参照渡し を調べましたが、よくわかりませんでした。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ColorChange.aryにはちゃんとアクセスできているようですが、LogScriptがファイルを出力するのはStartのタイミング、ColorChangearyをシャッフルするのはUpdateのタイミングなので、出力された結果がシャッフル前のものになっているだけではないでしょうか。

aryをシャッフルするタイミングをもっと早くしてみるとどうでしょうか?

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEditor; 4using UnityEngine; 5using UnityEngine.UI; 6 7public class ColorChange : MonoBehaviour 8{ 9 public GameObject[] buttons; 10 11 public float timeOut = 1; 12 private float timeElapsed; 13 14 bool one; 15 int i; 16 17 public static int[] ary = Shuffle(new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }); 18 private static System.Random rng; 19 20 private static int[] Shuffle(int[] array) 21 { 22 if (rng == null) 23 { 24 rng = new System.Random(); 25 } 26 27 //重複なしランダム配列-------------------------------------------- 28 if (array != null) 29 { 30 int n = array.Length; 31 while (n > 1) 32 { 33 n--; 34 int k = rng.Next(n + 1); 35 int tmp = array[k]; 36 array[k] = array[n]; 37 array[n] = tmp; 38 } 39 } 40 //重複なしランダム配列ここまで--------------------------------------- 41 42 return array; 43 } 44}

投稿2019/05/27 21:35

Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/28 02:14

ご丁寧にありがとうございます。 理解することができ、無事問題が解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問