Unityで視線入力アプリ仕上げ⑤ 位置とサイズの保存が出来た
やっと移動させた画像の位置やサイズ変更後の大きさの保存が出来ました。
image1のスクリプトですが
//この画像のxとY方向のサイズ。これを基準にみんな大きさを変える
public float xScale;
public float yScale;
//保存用。この画像のxとY方向の位置。
public float xPosi;
public float yPosi;
これを最初に入れておいて、
private void Start()の中に
//**位置やサイズをロードする
xScale = PlayerPrefs.GetFloat("xScale", 15);
yScale = PlayerPrefs.GetFloat("yScale", 15);
xPosi = PlayerPrefs.GetFloat("x1Posi", 15);
yPosi = PlayerPrefs.GetFloat("y1Posi", 15);
// back1Cu.GetComponent<play>().ScaleUp();
this.transform.position = new Vector3(xPosi, yPosi, screenPoint.z);
this.transform.localScale = new Vector3(xScale, yScale, 1.0f);
を、入れる。
後、サイズを変更する
if (Input.GetKey(KeyCode.RightArrow))
の中に、
//**保存の為位置やサイズを代入
hozonkansusize();
を入れる。これは、
private void hozonkansusize()
{
// スコアを保存
PlayerPrefs.SetFloat("xScale", xScale);
PlayerPrefs.SetFloat("yScale", yScale);
PlayerPrefs.Save();
}
↑これのこと。
後、void Update()の中に、元に戻せるように
if (Input.GetKeyDown(KeyCode.P))
{
this.transform.position = new Vector3(-360, 0, screenPoint.z);
this.transform.localScale = new Vector3(200, 200, 1.0f);
xScale = 200;
yScale = 200;
hozonkansusize();
}
を入れました。
位置は、最終の位置を覚えたら良いので
//位置の保存。終了時に呼び出される
private void OnApplicationQuit()
{
PlayerPrefs.SetFloat("x1Posi", transform.position.x);
PlayerPrefs.SetFloat("y1Posi", transform.position.y);
}
としました。
これを基に、他の背景や他の画像の位置等も作ったのですが、
このimage1画像が載っている背景のPlay.csだけは、
ワンテンポ遅れて読み込むことになって
(image1.csを読み込むのに時間がかかってるからだと思います、多分)
本当はimage1の画像サイズ等に合わせて背景のサイズも変わって欲しいのですが、
背景サイズを先に読み込んでしまって
前回の保存を反映しない。
ということが起きました。
そこで、いろいろ悩みましたが、現在のところ
【Unity】スクリプトの処理の実行タイミングを操作する - Qiita
こちらを参考に、〇秒後に処理をする。
というのを入れることでワンテンポ遅れて前回の値を
読み込ませることで、うまくいきました。
今回も、結構疲れたので、
この記事内に書かないといけないことで抜けがあるかも知れません・・・。