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

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

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

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

Unity

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

Q&A

解決済

3回答

2014閲覧

宣言した配列の上書き方法

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity

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

0グッド

0クリップ

投稿2019/05/28 02:12

編集2019/05/28 07:52

前提・実現したいこと

宣言した配列の中身を上書きする方法が知りたいです。
int[] ply = new int[] { 9, 9, 9, 9, 9, 9, 9, 9, 9 };
この中身を、上書きしたいです。
LogScriptで上書きした配列を使用したいです。

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

LogScriptの表示結果が 9,9,9 となってしまう。

該当のソースコード

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

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

bool aji; int i; int[] ply = new int[] { 9, 9, 9, 9, 9, 9, 9, 9, 9 }; // Start is called before the first frame update void Start() { aji = true; } // Update is called once per frame void Update() { //プレイヤー配列作成--------------------------------- if (aji) { if (Input.GetKeyDown(KeyCode.Alpha0)) { ply[i] = 0; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha1)) { ply[i] = 1; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha2)) { ply[i] = 2; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha3)) { ply[i] = 3; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha4)) { ply[i] = 4; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha5)) { ply[i] = 5; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha6)) { ply[i] = 6; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha7)) { ply[i] = 7; i = i + 1; } if (Input.GetKeyDown(KeyCode.Alpha8)) { ply[i] = 8; i = i + 1; } if (i == 8) { aji = false; } } //プレイヤー配列作成ここまで------------------------------------

}
}

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

public class LogScript : MonoBehaviour
{
ButtonMane 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秒"); bool ikr; private void Start() { ikr = true; for (int i = 0; i < 9; i++) { log[i] = BCheck.ply[i]; }

private void LateUpdate()
{
if (ikr)
{
for (int i = 0; i < 5; i++)
{
pro[i] = ButtonMane.ply[i];
}

if (File.Exists("log") == false) { Directory.CreateDirectory("log"); } if (File.Exists("log/" + datetimeStr1 + "") == false) { Directory.CreateDirectory("log/" + datetimeStr1 + ""); } StreamWriter sw; sw = new StreamWriter("log/" + datetimeStr1 + "/" + datetimeStr2 + ".csv", true); sw.WriteLine("test" + 100); for (int i = 0; i < 9; i++) { sw.WriteLine(log[i]); } sw.Close(); ikr = false; } }
C#

試したこと

ネットで調べてみましたが、わかりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

y_waiwai

2019/05/28 03:17

ふつーに上書きするのでいけませんか? 問題点は何でしょうか
退会済みユーザー

退会済みユーザー

2019/05/28 03:36

他のスクリプトで配列を使用するときに、定義した順番になってしまうことが問題点です。
y_waiwai

2019/05/28 03:38

定義した順番とは? 質問を編集してそこらへんのことを詳しく説明しましょう
退会済みユーザー

退会済みユーザー

2019/05/28 04:28

言葉足らずで申し訳ないです。
k.matsuda

2019/05/28 10:01

新しい質問を投稿されたようですので、こちらは解決済みにしておいて下さいね。
guest

回答3

0

いまいち問題がなにかわかってませんが、、
はやいはなし、LateUpdate関数が呼ばれる前にWriteLog関数を呼んでるだけなのでは。

VisualStudioを使ってるなら、ブレークポイントを設定して実行を止め、ワンステップづつ変数の内容をモニタしながら実行できるので、そうやって動作を確認してはどうでしょうか

投稿2019/05/28 05:24

y_waiwai

総合スコア87749

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

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

退会済みユーザー

退会済みユーザー

2019/05/28 07:43

ありがとうございます。
guest

0

ベストアンサー

log[0] = BCheck.ply[0]; log[1] = BCheck.ply[1]; log[2] = BCheck.ply[2];

aryじゃなくてplyでは?

追記
他にも色々問題ありそうな気がしますが・・・。

追記

void Start() { aji = true; int i = 0; int[] ply = new int[] { 9, 9, 9, 9, 9, 9, 9, 9, 9 }; }

こちらで初期化してみるのはどうでしょうか?
あと、i の初期化も必要ですね。

投稿2019/05/28 04:36

編集2019/05/28 08:01
k.matsuda

総合スコア293

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

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

退会済みユーザー

退会済みユーザー

2019/05/28 05:05

すみません。そうですね。ありがとうございます。
k.matsuda

2019/05/28 07:14

BCheckが、実行されているか確認してみてください。 さらに、キーが押されたとき、それぞれのif文が実行されているか確認してください。
退会済みユーザー

退会済みユーザー

2019/05/28 07:33

BCheckが実行されていることが、確認出来ました。 キーを押したif文も実行されていることが、確認出来ました。
k.matsuda

2019/05/28 08:11

色々試行錯誤されているようですが、 キーが押されたら、ログを記録するスクリプトを呼び出す。 という方法のほうがいい気がします。
退会済みユーザー

退会済みユーザー

2019/05/28 08:21

確かにそっちのほうが良さそうですね。
guest

0

ply = new int[] { 8, 8, 9, 9, 9, 9, 9, 9, 9 };

投稿2019/05/28 02:23

Zuishin

総合スコア28660

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

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

Zuishin

2019/05/28 07:55

この回答で解決しないなら質問が間違っているのでしょう。書き直してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問