

オブジェクトを非表示にするのではなくオブジェクトをn秒後になるまで使えなくするといった  
仕様にしたいのですが、方法はありますでしょうか


CC BY-SA 3.0
2015-10-21T05:20:25.697
17888
2015-10-21T06:40:18.860
9268
question
c# unity3d
オブジェクトを一時的に使用できないようにする方法


一旦、オブジェクトをコピーしてn秒後に戻すとかはどうでしょうか。


CC BY-SA 3.0
2015-10-21T05:22:48.700
17889
2015-10-21T05:22:48.700
12881
17888
answer


「使えなくする」の意図するところがまだ分かりませんが、そのオブジェクトにスクリプトを付けて（付いていればその中で）「処理中」というフラグを用意して「処理できない時間です」という判断をしたらいいかと思います。

[code]

    bool isActive = false;
    
    public void StartAction() {
        if (isActive) return;        // 「処理中」なので何もしない
    
        StartCoroutine(DoAction());
    }
    
    Enumerator DoAction() {
        isActive = true;
    
        // 何か処理
    
        yield return new WaitForSeconds(10.0f);    // 10秒間
        isActive = false;
    }
    
[/code]


CC BY-SA 3.0
2015-10-21T06:24:35.047
17893
2015-10-21T06:24:35.047
2079
17888
answer


staticメンバに前回実行した時間を記録しておいて、メソッド実行時に現在時間と比較して、実行可能な時間帯でなければ待機する、という形で実装してみてはいかがでしょうか。  
オブジェクトが同時に複数存在するときに、ちょっと複雑になりそうですが……。


CC BY-SA 3.0
2015-10-21T06:40:18.860
17894
2015-10-21T06:40:18.860
9515
17888
answer