前提
unityで電卓をつくっているところで、数を保存したいというところです。
スクリプトをどこに張り付けたかの画像です今回はbuttonスクリプトをつかいます。
![]
実現したいこと
・同じスクリプト内の同じ変数の共有
発生している問題・エラーメッセージ
該当のソースコード内の問題の部分のメッセージをみてほしいです具体的に書いてあります。
該当のソースコード
c♯
問題の部分
public void OnClick1()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "1";
firstnumber[numberType, count] = 1;
count = count + 1; //ボタン①をおすとcountが1ずつあがって今回は3回押してcount = 3になる
}
public void OnClickplus()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "+";
button obj = new button();// number関数のないのDebug.Log(count)では1が出力される
obj.number();
UnityEngine.Debug.Log(count);//ここでは3が出力される
count = 0;
numberType++;
}
public void number()
{
count++;
UnityEngine.Debug.Log(count);
count++;
for (int b = 0; b < count; b++)
{
calnumber = calnumber + firstnumber[numberType, b] * (10 ^ (count - b - 1)); UnityEngine.Debug.Log(calnumber); } stocknumber[numberType] = calnumber; }
全体のソースコード
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;
public class button : MonoBehaviour
{
/*表示されている数字が0のときに=をやるとfirstnumber[0, 0]の適当な数字が画面出力させてしまう
/同名の変数で初期化しなおし、元の配列のコピーから書き戻す例(配列の長さを初期化後に変更するより)
/配列から要素を検索するにはArray.IndexOfメソッドを使用します配列のメソッド(c#)超初心者向けより。
/配列の要素数を取得、変更するArray.Resize(ref numbers, numbers.Length * 2);をつかって
/lengthをつかってfor文をする
/ firstnumber[0] = score.text;/
/UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();は何個もいるのか?/
/同じスクリプトを違うボタンにアタッチしているからそれぞれのcountができている/
/Flagが1か0でwhileするかしないか決める/
/数字を文字列で表して演算子が来たら文字列終わってまた新しい文字列を作る/
/演算子のボタンを押したら違う配列に切り替わる/
/bool型を使って演算子か数字かを分ける/
/掛け算割り算を優先的に計算する方法/
/0を先頭の数字にしない方法/
/=を入力したら計算して表示する方法/
private int[,] firstnumber = new int[100, 100];
private int[] stocknumber = new int[100];
public int count = 0;
public int numberType = 0;
private int calnumber = 0;
public void OnClick1() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "1"; firstnumber[numberType, count] = 1; count = count + 1; } public void OnClick2() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "2"; firstnumber[numberType, count] = 2; count = count + 1; } public void OnClick3() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "3"; firstnumber[numberType, count] = 3; count = count + 1; } public void OnClick4() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "4"; firstnumber[numberType, count] = 4; count = count + 1; } public void OnClick5() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "5"; firstnumber[numberType, count] = 5; count = count + 1; } public void OnClick6() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "6"; firstnumber[numberType, count] = 6; count = count + 1; } public void OnClick7() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "7"; firstnumber[numberType, count] = 7; count = count + 1; } public void OnClick8() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "8"; firstnumber[numberType, count] = 8; count = count + 1; } public void OnClick9() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "9"; firstnumber[numberType, count] = 9; count = count + 1; } public void OnClickdevide() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "÷"; button obj = new button(); obj.number(); count = 0; numberType++; } public void OnClickmulti() { UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>(); score.text = score.text + "×"; button obj = new button(); obj.number(); count = 0; numberType++; }
public void OnClickequal()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "=";
numberType++;
}
public void OnClickreset()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = null;
count = 0; numberType= 0; }
public void OnClickplus()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "+";
button obj = new button();
obj.number();
UnityEngine.Debug.Log(count);
count = 0;
numberType++;
}
public void OnClickminus()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "-";
button obj = new button();
obj.number();
count = 0;
numberType++;
}
public void OnClick0()
{
UnityEngine.UI.Text score = text.GetComponent<UnityEngine.UI.Text>();
score.text = score.text + "0";
firstnumber[numberType, count] = 0;
count++;
}
public void number() { count++; UnityEngine.Debug.Log(count); count++; for (int b = 0; b < count; b++) { calnumber = calnumber + firstnumber[numberType, b] * (10 ^ (count - b - 1)); UnityEngine.Debug.Log(calnumber); } stocknumber[numberType] = calnumber; } public GameObject text = null; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { }
}
試したこと
同じスクリプトないの同じ変数の共有と調べたが違うスクリプトの変数の共有しか出てこなかった
補足情報(FW/ツールのバージョンなど)
unity2020
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。