質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1988閲覧

一定秒後に呼び出したInvokeを一時停止させたい

LightGive

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/10/03 05:32

###前提・実現したいこと

Unityでコルーチンではなく、一定秒数後にInvokeで呼び出したのを、一時停止・再開をさせたいです。そもそも無理かもしれませんが、あまりC#に詳しくないので回答お願い致します。

試したソースコードについては下記に記入しました。

###該当のソースコード

using UnityEngine; public class Test : MonoBehaviour { /// <summary> /// TestMethodを呼び出すまでの時間 /// </summary> [SerializeField] private float callTime = 5.0f; /// <summary> /// ポーズしているかどうか /// </summary> private bool isPause = false; void Start () { Invoke("TestMethod", callTime); } void Update () { if (!Input.GetKeyDown(KeyCode.Space)) return; if (isPause) { //Resume処理 } else { //Pause処理 } } void TestMethod() { Debug.Log("呼ばれました"); } }

###試したこと
調べたりはしてみましたが、英語のページばかりでよくわかりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
Unity:Unity2017.1.1.p3
言語:C#

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Invokeは簡易的に使えるようにしている反面、そうした停止処理はなかったように思います。

コードを見ていると、おそらく一時停止させたいのだろうな、と思いますが、その場合はやはりコルーチンなどで処理を書かないとならないと思います。

投稿2017/10/03 05:38

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LightGive

2017/10/03 05:55 編集

速い回答ありがとうございます。 なんとなく無理そうだとは思っていましたが、やっぱ無理ですか…。 コルーチンよりInvokeの方が軽いと聞いたのでInvokeを使っていたのですが、こういう所で積むんですね。。。一時停止機能を作りたいので、現状Invokeを使っているところをコルーチンに修正していきたいと思います。 有難うございました。
guest

0

ベストアンサー

IsInvokingで呼び出し待ち中かチェック、CancelInvokeでキャンセルすることもできるそうですが(すみません、試したことがなくどういう挙動をするのか不確かです)、コルーチン方式に書き直せそうでしたら、そちらの方が柔軟性がありそうでいいかもしれませんね。

参考1: taskem — CoroutineやInvokeをキャンセルする方法
参考2: 【Unity】MonoBehaviour.Invoke()ってなんだろう? - うら干物書き

投稿2017/10/03 06:25

編集2017/10/03 06:37
Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LightGive

2017/10/03 07:04

回答ありがとうございます。 既に答えてくださった方も難しいとのことだったので、他の方法の方が近いうちに出てこない限り、コルーチンに書き直す方向で行こうと思います。参考のリンク有難うございます、チェックやキャンセルも出来るんですね、、、Invokeについて少し詳しくなりました。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問