【ハルシオンブログ】Invoke使ってますか?私は使ってません。でも意外と使えそう?簡単なInvokeの使い方
こんにちは。坂内っす。
さみーさみー
年末なってきましたね!
忘年会やりすぎ注意ですね!
さて、UnityでInvokeって使ってますか?
Coroutineはよく使うけど、Invokeってあんまり使ったことないんですよね。
でも実は意外と使えるのかなって思い調べてみたので、そのメモです。
基本的に「〇〇秒後に■■の処理を行う」って時に使いますよね。
【Invoke】
[Blog20211213.cs]
「ボタンを押した2秒後にImageの色を青にする」
という処理がこれでできます。
【InvokeRepeating】
InvokeRepeatingというのもあります。
「指定したメソッドを〇秒おきに実行」というのができるもの。
[Blog20211213.cs]
こんな感じにすれば、ボタンを押した2秒後に色が変わり、その後1秒間隔で色が変わります。
【CancelInvoke】
Invokeを止めるものもあるぽいです。
[Blog20211213.cs]
ストップボタンを押すと、ちゃんと色の切り替えが止まりますね。
意外と使えたりする??
ただ、メソッドの呼び出しが文字列なのがやっぱり気になりますよね。
メソッド名ミスでも気づかないし・・・・
何かあった時に追いづらいのも嫌ですし。
ということで、Invokeの紹介でした。
ちょっと使ってみるのもありかもしれませんね。
では、あでゅ~ノシ
さみーさみー
年末なってきましたね!
忘年会やりすぎ注意ですね!
さて、UnityでInvokeって使ってますか?
Coroutineはよく使うけど、Invokeってあんまり使ったことないんですよね。
でも実は意外と使えるのかなって思い調べてみたので、そのメモです。
基本的に「〇〇秒後に■■の処理を行う」って時に使いますよね。
【Invoke】
[Blog20211213.cs]
using UnityEngine;
using UnityEngine.UI;
public class Blog20211213 : MonoBehaviour
{
[SerializeField] Image imgSquare;
[SerializeField] Button btnChangeColor;
private void Start() {
btnChangeColor.onClick.AddListener(() => Invoke("ChangeColor", 2f));
}
void ChangeColor() {
imgSquare.color = Color.blue;
}
}
「ボタンを押した2秒後にImageの色を青にする」
という処理がこれでできます。
【InvokeRepeating】
InvokeRepeatingというのもあります。
「指定したメソッドを〇秒おきに実行」というのができるもの。
[Blog20211213.cs]
using UnityEngine;
using UnityEngine.UI;
public class Blog20211213 : MonoBehaviour
{
[SerializeField] Image imgSquare;
[SerializeField] Button btnChangeColor;
private void Start() {
btnChangeColor.onClick.AddListener(() => InvokeRepeating("ChangeColor", 2f, 1f));
}
void ChangeColor() {
imgSquare.color = new Color32((byte)Random.Range(0,256), (byte)Random.Range(0, 256), (byte)Random.Range(0, 256), 255);
}
}
こんな感じにすれば、ボタンを押した2秒後に色が変わり、その後1秒間隔で色が変わります。
【CancelInvoke】
Invokeを止めるものもあるぽいです。
[Blog20211213.cs]
using UnityEngine;
using UnityEngine.UI;
public class Blog20211213 : MonoBehaviour
{
[SerializeField] Image imgSquare;
[SerializeField] Button btnStart;
[SerializeField] Button btnStop;
private void Start() {
btnStart.onClick.AddListener(() => InvokeRepeating("ChangeColor", 2f, 1f));
btnStop.onClick.AddListener(() => CancelInvoke());
}
void ChangeColor() {
imgSquare.color = new Color32((byte)Random.Range(0,256), (byte)Random.Range(0, 256), (byte)Random.Range(0, 256), 255);
}
}
ストップボタンを押すと、ちゃんと色の切り替えが止まりますね。
意外と使えたりする??
ただ、メソッドの呼び出しが文字列なのがやっぱり気になりますよね。
メソッド名ミスでも気づかないし・・・・
何かあった時に追いづらいのも嫌ですし。
ということで、Invokeの紹介でした。
ちょっと使ってみるのもありかもしれませんね。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Unity2012.2でProjectWindowでコピペなどができるようになっていた。 | 【ハルシオンブログ】Unity2021.2でQuickSearchが便利になった。 »
コメント
| h o m e |