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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

833閲覧

指定した数字をランダムに取得したい

CraftTable

総合スコア234

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2020/04/30 02:04

Unityでゲームを作っている者です。
指定した数字(今回の場合は50と-50)をランダムに取得するプログラムを自分で作ってみたのですが、
少し長いのでこのプログラムをもう少し短くする方法を教えていただけませんでしょうか?

C#

1 [SerializeField] 2 int countrange = 0; 3 [SerializeField] 4 int xcount = 0; 5 [SerializeField] 6 int ycount = 0; 7 [SerializeField] 8 int zcount = 0; 9 10 void Update () 11 { 12 countrange = Random.Range(0, 1); 13 if (countrange == 0) 14 { 15 xcount = -50; 16 } 17 else if (countrange == 1) 18 { 19 xcount = 50; 20 } 21 countrange = Random.Range(0, 1); 22 if (countrange == 0) 23 { 24 ycount = -50; 25 } 26 else if (countrange == 1) 27 { 28 ycount = 50; 29 } 30 countrange = Random.Range(0, 1); 31 if (countrange == 0) 32 { 33 zcount = -50; 34 } 35 else if (countrange == 1) 36 { 37 zcount = 50; 38 } 39 }

どなたか教えてください。
よろしくお願いします<(_ _)>

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

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

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

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

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

Zuishin

2020/04/30 02:11 編集

ランダムで -50 か 50 のどちらかを返すメソッドを作ったらどうでしょうか。 そのメソッドがたとえば int PlusMinusFifty() という名前だとすると、次のようにできます。 xcount = PlusMinusFifty(); ycount = PlusMinusFifty(); zcount = PlusMinusFifty();
Zuishin

2020/04/30 02:12

また、0 を -50 に、1 を 50 に変換するには、if 文を使わずとも countrange * 100 - 50 でできます。
CraftTable

2020/04/30 02:25

教えていただきありがとうございます つまりはこういうことでしょうか? void CountFifny() { countrange = Random.Range(0, 1) * 100 - 50; } void Update () { CountFifny(); xcount = countrange; CountFifny(); ycount = countrange; CountFifny(); zcount = countrange; }
Zuishin

2020/04/30 02:29

void ではなく int で返してください。 return Random.Range(0, 1) * 100 - 50; そうすれば直接代入できます。 xcount = CountFifty();
CraftTable

2020/04/30 02:44

ありがとうございます! かなり短くなりました!
guest

回答1

0

自己解決

int型のメソッドにreturnの値を返すことで解決しました。
教えていただいた方ありがとうございました(。-人-。)感謝

C#

1 [SerializeField] 2 int xcount = 0; 3 [SerializeField] 4 int ycount = 0; 5 [SerializeField] 6 int zcount = 0; 7 8 int CountFifny() 9 { 10 return Random.Range(0, 1) * 100 - 50; 11 } 12 13 void Update () 14 { 15 xcount = CountFifny(); 16 ycount = CountFifny(); 17 zcount = CountFifny(); 18 }

投稿2020/04/30 02:45

編集2020/04/30 03:15
CraftTable

総合スコア234

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

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

Zuishin

2020/04/30 02:48

return は値を代入ではなく「戻す」または「返す」と言います。 xcount などにその戻り値を入れているのが「代入」です。 変数やプロパティに使う言葉です。
CraftTable

2020/04/30 03:02

無知さらしてしまったみたいです、指摘ありがとうございます
Zuishin

2020/04/30 03:05

たびたび申し訳ありませんが、メソッド「に」ではなく、メソッド「が」、あるいはメソッド「で」、またはメソッド「の」ですね。ここに書かれている中では CountFifty と Update がメソッドです。
CraftTable

2020/04/30 03:29

再三のご指摘ありがとうございます。 そのあたりには疎いので・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問