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

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

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

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

Unity

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

Q&A

解決済

1回答

3831閲覧

Unityで秒をミリ秒に変換する

Iwan

総合スコア35

C#

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

Unity

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

0グッド

0クリップ

投稿2021/05/27 11:44

編集2021/05/27 11:59

■ 使用環境
Windows10
Unity2019.04.20f

■ 質問
一定時間(ミリ秒)経過したら処理(今回はログ出力)を行う処理を実装したく試作してみたのですが
正しいのか自信が無い為、質問させて頂きました。

■ 処理内容

public class Sample { int target_msec = 3; // 目標値 float check_msec; // 秒をミリ秒に変換した値 float counter; // 加算用 void Update() { counter += Time.deltaTime; check_msec = (counter * 1000); // ミリ秒に変換 target_msec = (target_msec * 1000); // 目標値もミリ秒に変換 if (check_msec >= target_msec ) // ミリ秒同士を比較したい { // 処理(省略) } } }

宜しくお願いします。

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

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

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

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

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

YAmaGNZ

2021/05/27 12:04

target_msecにずっと1000をかけてますがいいのですか?
Iwan

2021/05/27 12:12

target_msecは変動しない、固定なのでStartなどで一回1000を掛ければ済むのでUpdateで毎回1000を 掛ける必要は無い。と言う事でしょうか?
YAmaGNZ

2021/05/27 12:39

どうしたいのかは私は知らないので、Updateを呼び出すたびに1000かけてるけどいいのですか?と聞きました。 毎回かけるという仕様で作成しているのであれば不要な指摘だと思いますのでその場合は無視して頂ければよろしいかと。
Iwan

2021/05/28 04:52

毎回掛ける仕様は意図していないので記述ミスになります。
guest

回答1

0

ベストアンサー

恐らくですが、
target_msec = (target_msec * 1000); この処理に問題があるように思えます。
target_msecを1000倍したものを更に代入してるので....

target_msec = 3 target_msec = 3000 (※update()一回実行) target_msec = 3000000(※update()二回実行) target_msec = 3000000000(※update()三回実行) ...

のようにどんどん膨れ上がってしまいます。

おそらく目標値は三秒ということですので....

csharp

1public class Sample 2{ 3 4 float target_msec; // 目標値の秒をミリ秒に変換した値 5 int target_sec = 3; // 目標値(秒) 6 7 float check_msec; // 秒をミリ秒に変換した値 8 float counter; // 加算用 9 10 void Update() 11 { 12 counter += Time.deltaTime; 13 14 check_msec = (counter * 1000); // ミリ秒に変換 15 target_msec = (target_sec * 1000); // 目標値もミリ秒に変換 16 17 if (check_msec >= target_msec ) // ミリ秒同士を比較したい 18 { 19 // 処理(省略) 20 } 21 } 22}

のようにすればよいのではないかと思います。

投稿2021/05/27 12:46

AsPulse

総合スコア35

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

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

Iwan

2021/05/30 11:45

都合により反応が遅くなり申し訳ありません。 target_msec = (target_msec * 1000);の部分は問題がありこちらの記述ミスです。 教えて頂いた方法で確認出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問