#やりたいこと
unity & VScode
ボタンを押すと変数が変化するようにしたいのですが上手くいきません。
#スクリプト
スクリプトは2つあります
まずボタンを押したときに①のスクリプトの関数を呼び出し、その関数内で②のスクリプトの関数を呼び出して変数を変更するというものです。
変数名は"MoveSpeed" というもので具体的には移動速度を変化させたいのですが変化しません。
#①ボタンで呼び出す関数
public void SpeedA() { if (cake >= 5) { int getCake = -5; cake = cake + getCake; scsc.Five(); //この下が問題の関数 fsc.Speed(); hpScript.MaxMa(); hpScript.Mthree(); } }
問題なのは上記の"fsc.Speed();"の部分です。
ただし、この段階ではこのスクリプト自体は問題なく全ての処理が完結しております。
問題は次の②で起こります。
#②上で呼び出されたfsc.Speed()を含むfscスクリプト全体
public class FoxManager : MonoBehaviour { public float MoveSpeed; void Start() { MoveSpeed = 15; } void Update() { //Debug.Log (MoveSpeed); if (RightMove == true) { transform.position += new Vector3( MoveSpeed * Time.deltaTime, 0, 0); this.transform.LookAt(rightObj.transform); } if (LeftMove == true) { transform.position += new Vector3( -MoveSpeed * Time.deltaTime, 0, 0); this.transform.LookAt(leftObj.transform); } } public void Speed() { MoveSpeed += 1; } }
最初にStart()内でMoveSpeedは15に設定されます。
そしてボタンを押すと①のスクリプトが呼び出され、その中で②のスクリプトの一番下の関数"Speed()"が呼び出されてMoveSpeed += 1;されMoveSpeedは16になります。(ここまでは上手くいく)
しかし次のフレームに移った瞬間にMoveSpeedは再び15に戻ってしまいます。
ちなみにこれらの処理は"Time.timeScale = 0;"にて時間が停止している中で行われています。
とにかく処理後のフレームでもMoveSpeedが16のままでいて欲しいのですが、解決お願いいたします。
あなたの回答
tips
プレビュー