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

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

新規登録して質問してみよう
ただいま回答率
85.46%
COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

C#

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

Unity

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

3回答

3781閲覧

配列の要素の数とcount関数によるif文の条件式の書き方について

niconico.smile

総合スコア21

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

C#

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

Unity

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/07/20 11:33

編集2021/07/20 13:39

やりたいこと
unity内で配列を用いてif文の条件式を書きたい。

前提条件
前提条件として、このスクリプトをオブジェクトにアタッチし、スクリプトをアタッチしたオブジェクトのinspectorの中でspriteの値を決めるとその配列の数だけspriteを関連付けられるようにする。

具体的な説明
まず、

public Sprite[] 変数;//この変数は何でも良い
private int count;

とし、 void Start()の中で、count=0と決める。

その後、void Update()の中で、

if(count=0){処理}の時と、

if(count=1 <= inspectorで指定した要素の数-1) {処理}の時と、

if(count=inspectorで指定した要素の数の時) {処理}

の時で処理を分けたい。int型はbool型に暗黙的に変換できないみたいなエラーが出るので、この範囲でifを指定できるコードの書き方を知っていましたら教えていただけますとありがたいです。

if文での範囲指定方法というよりも、inspector内で設定したspriteの要素の数の値をif文の条件式で使う方法を教えていただきたいです。決まった値ではなく、動的な値で対応できるようにしたいです。

void Start()の中で、
inspectorのこのスクリプトで設定してある要素をGetComponentなどで取得してif文の条件式の中で使うなどを考えています。

具体的例

具体的な説明が足りていなくて申し訳ございません。事前にinspectorの中で指定した配列のサイズをif文の条件式で使いたいということです。例えば、この画像で言うと、spriteが4になっているため、配列は4つでき、4つのspriteを関連つけられます。 そこで、if(count=0)の時、 if(count=1以上count=3以下)の時、 if(count=4)の時、 という条件分けがされるようにしたいということです。この条件式はやりたいことであって実際に使用するコードを示すものではありません。このinspector内の4の値を変えたらそれによって条件式も変わるようにしたいといった感じです。

もう一つ例として、

例: inspector内のspriteを6とした場合は、6個の配列ができ、6個のspriteを関連つけさせられるため、

if(count=0)の時、 if(count=1以上count=5以下)の時、 if(count=6)で条件分けされるようにする。

という感じです。

コードでの書き方を知っていましたら何卒よろしくお願いいたします。

![イメージ説明

何卒よろしくお願いいたします。

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

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

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

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

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

izmktr

2021/07/20 11:50

count = 0 ではなく、count == 0 じゃないですか?
niconico.smile

2021/07/20 12:02

質問ありがとうございます。if文の中の範囲指定のところはコード内でやりたいことを書いているため、実際の範囲指定の方法とは異なります。今回の質問の意図としては、inspector内で設定したspriteの要素の数の値をif文の条件式で使う方法を教えていただきたいです。決まった値ではなく、動的な値で対応できるようにしたいと考えています。
YAmaGNZ

2021/07/20 12:12

「int型はbool型に暗黙的に変換できないみたいなエラーが出るので」 これは例のように条件を書いた時のエラーとなります。 なので「実際の範囲指定の方法とは異なります」と言われても記述している条件式が間違っているという話になります。
BeatStar

2021/07/20 12:40 編集

まず、ご自分の質問を『第三者的視点で』読んでみてください。 つまり、「赤の他人が同じ質問をしてきた状態」です。 ただし、質問者さんは何も情報を得ていない状態から読むと考えてください。 そうすると、私が勝手に暴走気味になった理由がわかるはずです。
BeatStar

2021/07/20 12:55

> 決まった値ではなく、動的な値で対応できるようにしたいです 実例を出した方がいいですよ。 ■ countが0のとき... ■ count が 0で ○○を満たすとき.... とかみたいに。
niconico.smile

2021/07/20 13:22

たしかに分かりにくかったかもしれませんね。失礼しました。具体例提示しました。
BeatStar

2021/07/20 13:27

count == なんちゃら っていうのは固定で、「比較対象」である数値がその都度変わるということでいいでしょうか?
niconico.smile

2021/07/20 13:34

はい、そういうことだと思います。 inspectorの中のspriteの値を変えると配列の数が変わる(spriteを6にすると、6個の配列ができ、6個のspriteを関連つけさせられる。)ため、その値が変わるとif文の中の条件式がその値によって変わるようにしたいです。 例: spriteを6とした場合は、 if(count=0)の時、 if(count=1以上count=5以下)の時、 if(count=6)で条件分けされるようにする。 という感じです。
YAmaGNZ

2021/07/20 13:38

インスペクタ上で設定したspriteがどの変数に入るのか分からないってことですか? どの変数に入るか分かれば、設定した個数も分かるはずです。 配列の要素数の求め方が分からないのであれば、私のコメントを見てください。
niconico.smile

2021/07/20 13:49

そうですね、そのinspector内のspriteのvalueの取得の仕方がわからないと言った感じです。 例えば、 public Sprite[] m_Sprite; という配列を用意した場合、どのようにinspectorで入力されたspriteのvalueを取得するんでしょうか?
guest

回答3

0

比較演算子 (C# リファレンス)
C#の基本的な文法となりますので、C#の基本を学習することをお勧めします。

投稿2021/07/20 11:54

YAmaGNZ

総合スコア10294

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

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

niconico.smile

2021/07/20 12:00

ご回答ありがとうございます。if文での範囲指定方法というよりも、inspector内で設定したspriteの要素の数の値をif文の条件式で使う方法を教えていただきたいです。決まった値ではなく、動的な値で対応できるようにしたいです。
YAmaGNZ

2021/07/20 12:10

インスペクタ上で設定するにしても何かしら変数に格納されます。 「C# 配列 要素数」なりで検索すればよろしいかと
guest

0

自己解決

配列のサイズは、(配列).Lengthで取得できることから、

if (count == 0) {}
if (count >= 1 &&count <(Sprite配列).Length) {}
if (count == (Sprite配列).Length) {}

とすれば無事countでの範囲分けの処理を行うことができました。

投稿2021/07/20 14:34

niconico.smile

総合スコア21

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

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

BeatStar

2021/07/20 14:40 編集

うん? それが聞きたかったことなんですか? 質問文からは『if文の条件式の書き方』のことに見えるのですが…
niconico.smile

2021/07/20 14:50

はい、これが聞きたかったことです。これであれば、inspectorのspriteの値が変化してもそれによってif文の中の条件式が変化するので。 他の質問サイトでも質問をし、この回答を基にコードを組み直したら行いたかった処理を行えたため、自己解決としました。
niconico.smile

2021/07/20 15:08

推奨していないだけであって、テラテイル内のこの質問に対する回答では本質的に問題を解決できない回答が多くあり、解決したのが他サイトであっても解決後、こちらのサイトで解決方法を示しているのだから何も問題ないと考えます。そこまで強制される筋合いはないです。
episteme

2021/07/20 23:27

https://teratail.com/help#posted-otherservice やむを得ず複数のサイトに質問を投稿された場合は、 「質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。」
guest

0

まず基礎からやり直しましょう

基礎をないがしろにする事は大変危険ですし、回答者に対しても非礼に当たります。

回答者は善意で回答しています。
金をもらっての回答ではありませんし、仕事としてでもありません。
サポートセンターですらありません。

つまり、基礎をないがしろにするってことは、
「善意で教えてくれる人が『君は基礎が出来ていないから基礎からやるべきだよ』と指摘されても基礎をやろうとすらしないことと一緒」です。

たとえば、「包丁を一度も使ったことがありませんが、かつら剥きのやり方を教えてください」と言われたらどうしますか?

包丁の使い方ぐらい教えればいいのに……と思うかもしれませんが、
その包丁の使い方とかが仮にこの道ウン十年の人しかできないとかみたいな技術だったらどうなるでしょうか。

教えるだけでも相当な労力と時間を使います。
挙句の果てには「かつら剥きのやり方だけ教えろ!!!」と暴言を吐かれるのです。

教えたいと思いますか?

アマチュアであれプロであれ、プログラミングができる人っていうのは相当な時間と労力をプログラミング関係につぎ込んでいます

放課後とかに家にすぐに帰ってプログラミング関係をやったり、
仕事の終わりにすぐ……とか、空き時間もプログラミング関係につぎ込むとかです。

そうやってやっとできる技術力を、「基礎をやりましょう」と言っても、
「答えだけ寄こせや!!!」と暴言を吐かれる。

さて、教えたいですかね?

私が、質問者さんに基礎が出来ていないと思う根拠は「あり得ないエラー」です。

まったくの別物。

int型はbool型に暗黙的に変換できないみたいなエラーが出るので、

エラーメッセージぐらい読みましょう

エラーメッセージは暴言で罵声でも罵倒でもハラスメントでもなく、
コンパイラ等からのメッセージです。

つまり、今の状態は『相手の話を聞かずに逆ギレしている人』です。

そんな人はコミュニケーションなんて取れませんよね。

まずはメッセージぐらい読みましょう。

肝心のエラーとその場所を見ると、

[コード]

if(count=1 <= inspectorで指定した要素の数-1) {処理}

[エラー]

int型はbool型に暗黙的に変換できない

ですね。

if文は「bool型の条件を取ります」。

つまり、true or false です。

で、条件式を見ると count = 1 となっています。

……なんで代入しているのでしょうか。

比較は == では?

もう一つのif文もそうだし。

それと、「何がしたいのかが不明瞭」です。

特にif文でやりたい処理がよくわからない。

仮に if( count == 1 <= ... ) だとしても、

「count が 1 以上、○以下」みたいなことをしたいのか、
実際には「count に1 をセットし、それが○以下」みたいなことをしたいのか。

そういうので意味が相当変わります。

プログラムは書いた通りにしか動きません

つまり、基礎がまったくできていないことが原因。

ちなみに、質問での「変数」とかあるやつ( private なんちゃらとか ) はフィールドです。

投稿2021/07/20 12:04

編集2021/07/20 12:19
BeatStar

総合スコア4958

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

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

BeatStar

2021/07/20 12:13

あー、ですね……(修正します)
niconico.smile

2021/07/20 12:22

他人に説教する前にご自身の基礎を見つめ直したらいかがでしょうか。私は逆ギレなどしていません。要望を伝えたのみです。回答をいただいた場合はお礼も言っています。また、質問文でのif文のカッコ内の条件式はやりたいことの説明であって実際のコードではありません。 countが0の時と、countが0<inspectorで設定した値-1の時と、countがinspectorで設定した値の時で条件分けをする方法を聞いているだけです。 エラー文に関しても、「型‘int’を‘bool’に暗黙的に変換できません」と出てきて分かりにくいと感じたため、要約して伝えただけです。
Zuishin

2021/07/20 12:32

要約というのは意味がわかる人がするものです。
BeatStar

2021/07/20 12:32

> 他人に説教する前にご自身の基礎を見つめ直したらいかがでしょうか。 ですね。失礼しました。(ちょっと冷静になった) ですが最初の質問(回答してから後に追記修正依頼を見ました)では、「= は == と書くつもりだったが間違った」的なものはありません。 > countが0の時と、countが0<inspectorで設定した値-1の時と... それを箇条書きにしてください。 たとえば、 ■ count = 0 のとき ■ count < 0 のとき ... のような感じで。 もしかしたら回答者と質問者では意図が食い違っていたりします。
退会済みユーザー

退会済みユーザー

2021/07/20 12:34

BeatStarさん(敬称付けました)は、質問者を悪と決めつけている。他人に説教する前にご自身の基礎を見つめ直したらいかがでしょうか。
BeatStar

2021/07/20 12:35

ちなみに、回答者は質問者と同じ環境にある…わけじゃないので、情報を『知っている前提』とされると 私みたいに勘違いでキレてダサい状態の人が出てきます。 (意図を取り間違うため) まずは情報を出し渋らずに、「具体的に」第三者がわかるように説明した方がいいです。 そうしないと私みたいなク○が湧き出ますよ?
BeatStar

2021/07/20 12:42

YukkuriReimuさん 付きまとわないでください。質問者さんに言われるのならわかりますが。 そもそもUnityなら出来ると豪語していたのだから、この質問に「適切に」回答できるはずです。
退会済みユーザー

退会済みユーザー

2021/07/20 12:44

くそー、反論する言葉もない。(>_<)相互フォローしませんか?スコアほしい、あなたもスコアほしいね?
退会済みユーザー

退会済みユーザー

2021/07/20 12:45

unity難しい
BeatStar

2021/07/20 12:47 編集

> 相互フォローしませんか?スコアほしい、あなたもスコアほしいね いりません。別にスコアが欲しくて回答しているのではなく、「自分も先輩たちに教えてもらっているから、この自分の技術や知識が後続の人達の役に立てばいいな」と言うぐらいのものです。 スコアなんていらないので、付きまとわないでください。
退会済みユーザー

退会済みユーザー

2021/07/20 12:47

okごめん
BeatStar

2021/07/20 12:50

つ、き、ま、と、わ、な、い、で、く、だ、さ、い!!!!
退会済みユーザー

退会済みユーザー

2021/07/20 12:52

分かった、分かった、分かった、分かった、分かった、分かった、返信しないで
niconico.smile

2021/07/20 13:25

>>Zuishinさん 要約と言いましたが、ただ型というものを元のエラー文のintとboolの後にそれぞれの付けただけなので意味は伝わると思います。
Zuishin

2021/07/20 13:58

いいえ、伝わりません。 エラーメッセージで大事なのはエラーコードと行番号です。
niconico.smile

2021/07/20 14:31

かしこまりました。今後、エラーメッセージを記載する際には気をつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問