~~本当は2つだけではないですが、ちょっと編集中ってことで許してください~~
- 一回しかこの処理行わせたくないな
という場合があるかと思います。
- Startメソッドを使う
- true,falseを使う
一回しかメソッドを実行しない方法にはこの2つがあります。
その2つのスクリプト例もお伝えします。
一回しかメソッドを実行させない方法
- Startメソッドを使う
- true,falseを使う
Startメソッドを使う
単純に実行したいメソッドをUpdataメソッド内に書くのではなく、Startメソッド内に書きます。
Startメソッドはゲーム開始時に一回のみ実行されるので、これで複数回実行されることはなくなります。
スクリプト例
立方体に「PlayerController」という名前のスクリプトがアタッチされてます。
Startメソッド内に処理を書く
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
// Use this for initialization
void Start () {
// オブジェクトをx軸方向に移動
transform.Translate(5, 0, 0);
}
// Update is called once per frame
void Update () {
}
}
このようにゲーム開始時に一度だけ実行されます。
Updateメソッド内に処理を書く
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
// オブジェクトをx軸方向に移動
transform.Translate(5, 0, 0);
}
}
1フレームごと実行されるので、なんども実行されます。
true,falseを使う
if文を使って、そのメソッドがtrueのときに実行する!のようにすれば、一回の実行でおさえることができます。
これはスクリプトを見たほうがわかりやすいです。
true,falseを使って一回のみメソッドを実行する
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
// 変数宣言
bool test = true;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if(test == true)
{
transform.Translate(5, 0, 0);
test = false;
}
}
}
最初に【test】変数の状況を【true】にしておきます。そしてif文で【test】変数の中身が【true】のときに実行するスクリプトを書いています。
そしてif文の中で【test】変数の中身を【false】にしています。これでUpdateメソッド内に書いてあっても、実行されませんね。
まとめ
- Startメソッドを使う
- true,falseを使う
特定の条件下でメソッドを一回しか使えないようにする方法の記事ものちのちあげます。こっちのほうが使えます。
以上です。サンプルゲームも作ってみてね。
以上さぎのみや(@saginomiya8)でした。
コメント