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

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

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

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

Unity

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

Q&A

解決済

4回答

886閲覧

Unityでのゲーム開発

Qicken

総合スコア6

C#

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

Unity

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

0グッド

0クリップ

投稿2020/05/01 13:18

編集2020/05/05 10:00

Unityでのゲーム開発を目指して勉強中です。今大体3週間ほど経ちました。

そろそろ入門レベルから次のステップに行こうと考えているのですが、自粛の影響であっちこっち行って書籍を確認する事も難しい上に値段も相当張るので中々決めかねています。
(若干前回の質問と重複していますが、デザイン設計は私にはまだ早いと結論付けました)

目星をつけているのは
>実戦で役立つC#プログラムのイディオム/定石&パターン
>C#2019逆引き大全
>究極のC#プログラミング
です。
それとももうUnityの専門書に手を出して良いものなんでしょうか。さすがに入門書を終えた段階では早いでしょうか?

ちなみに私は情報学部でもなんでもないのでアルゴリズム(という言葉が何を意味するのかもよく理解していません)すら触れたこともありません。与えられた文法を書き殴っている感じです。情報学部の畑を歩いた人が当然にやってきたことは何一つせずいきなりC#から入っています。

*完全に独学故、自分のレベルもよく分かってないので下記に自分が0から書いたコードを載せておきます。

public class GameSystem { public int Matrix { get; set; } public int Player { get; set; } public int PlayerChanger { get; set; } public string[] Color { get; set; } public string[,] Place { get; set; } public string Blank { get; private set; } public GameSystem() { Matrix = 3; Player = 0; PlayerChanger = 1; Color = new string[] { "⚫️" , "⚪️" }; Blank = "⬜︎"; Place = new string[Matrix, Matrix]; for (int i = 0; i < Place.GetLength(0); i++) { for (int j = 0; j < Place.GetLength(1); j++) { Place[i, j] = Blank; } } Place[(int)(Matrix / 2) - 1, (int)(Matrix / 2) - 1] = Color[0]; Place[(int)(Matrix / 2), (int)(Matrix / 2)] = Color[0]; Place[(int)(Matrix / 2) - 1, (int)(Matrix / 2)] = Color[1]; Place[(int)(Matrix / 2), (int)(Matrix / 2) - 1] = Color[1]; } public void Put(int x, int y) { Place[y, x] = Color[Player]; } public void Reverse(int x, int y) { //右 for (int i = 1; x + i < Place.GetLength(1); i++) { if (Place[y, x + i] == Blank) { break; } else if (Place[y, x + i] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y, x + j] = Color[Player]; } break; } } //左 for (int i = 1; x - i >= 0; i++) { if (Place[y, x - i] == Blank) { break; } else if (Place[y, x - i] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y, x - j] = Color[Player]; } break; } } //上 for (int i = 1; y + i < Place.GetLength(0); i++) { if (Place[y + i, x] == Blank) { break; } else if (Place[y + i, x] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y + j, x] = Color[Player]; } break; } } //下 for (int i = 1; y - i >= 0; i++) { if (Place[y - i, x] == Blank) { break; } else if (Place[y - i, x] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y - j, x] = Color[Player]; } break; } } //右斜め上 for (int k = 1; y + k < Place.GetLength(0) && x + k < Place.GetLength(1); k++) { if (Place[y + k, x + k] == Blank) { break; } else if (Place[y + k, x + k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y + r, x + r] = Color[Player]; } break; } } //左斜め下 for (int k = 1; y - k >= 0 && x - k >= 0; k++) { if (Place[y - k, x - k] == Blank) { break; } else if (Place[y - k, x - k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y - r, x - r] = Color[Player]; } break; } } //左斜め上 for (int k = 1; y + k < Place.GetLength(0) && x - k >= 0; k++) { if (Place[y + k, x - k] == Blank) { break; } else if (Place[y + k, x - k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y + r, x - r] = Color[Player]; } break; } } //右斜め下 for (int k = 1; y - k >= 0 && x + k < Place.GetLength(1); k++) { if (Place[y - k, x + k] == Blank) { break; } else if (Place[y - k, x + k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y - r, x + r] = Color[Player]; } break; } } } public void OutPutPieces() { for (int i = 0; i < Place.GetLength(0); i++) { for (int j = 0; j < Place.GetLength(1); j++) { Console.Write(Place[i, j]); } Console.WriteLine(); } } public bool Pass(GameSystem gameSystem) { var passBool = true; for (int i = 0; passBool == true && i < Place.GetLength(0); i++) { for (int j = 0; passBool == true && j < Place.GetLength(1); j++) { if (Place[i, j] == Blank && gameSystem.ReverseCounter(i, j) != 0) { passBool = false; } } } return passBool; } public void SwapPlayer() { int swap; swap = Player; Player = PlayerChanger; PlayerChanger = swap; } } }

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

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

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

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

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

dodox86

2020/05/01 23:15

プログラムコードを貼り付ける際は、マークダウン記法を使って見やすくしましょう。見づらいと、それだけで回答も離れていきます。 https://teratail.com/help#about-markdown
Qicken

2020/05/02 06:10

ご指摘ありがとうございました。修正しました。
len_souko

2020/05/05 09:43

リンク張ってくれているヘルプを見て何故そうなるのか 質問自体は解決したみたいですが、ヘルプをきちんと読むということは非常に重要なのでできるようにしてください。
Qicken

2020/05/05 10:01

コードのタイトルをつける物だと思ってました。直しておきました。
len_souko

2020/05/05 10:04

修正を確認しました。今後もいろいろ気を付けて学んで立派な技術者になれるように頑張ってください。
Qicken

2020/05/05 10:06

ありがとうございます。精進します。
guest

回答4

0

それとももうUnityの専門書に手を出して良いものなんでしょうか。さすがに入門書を終えた段階では早いでしょうか?

Unity は入門者にもとっつきやすいツールだと思いますし、すでに多少のゲーム開発経験があるなら特に問題ないと思います。

情報学部の畑を歩いた人が当然にやってきたことは何一つせずいきなりC#から入っています。

最初に学ぶ言語として C# は悪くないですし、最近では中学生・高校生でもプログラミングをやる時代ですから心配しなくても良いと思います。

投稿2020/05/02 01:18

nskydiving

総合スコア6500

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

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

Qicken

2020/05/02 06:08

回答ありがとうございます。実際にunityを使ってスキルアップしていくことにしました。
guest

0

ベストアンサー

3週間で多重ループと配列のインデックスを完璧に理解出来ている、という前提で話をすると相当な理解力なのでUnityでも何でも可能ではないでしょうか。

寧ろUnityの初心者本は出来るだけコードを書かずに動くゲームを作る事を目指しているモノが多いのでここまでのコーディング能力すら必要無いです。
逆に本格的なコードを書くつもりで臨むとUnityの操作を覚えたりコード以外の説明文が多い事でストレス感じる可能性高いです。
その位の低いハードルなので普通にUnityを始めてみてはどうでしょうか。

それとゲーム開発を目指しての目標はゲーム業界に就職する個人でゲームを作ってリリースするのどちらでしょうか?

この二つは勉強するべき比重や方向性が結構変わってくるので目標に合わせた方が良いです。

投稿2020/05/01 15:41

編集2020/05/01 16:05
Hawn

総合スコア1222

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

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

Qicken

2020/05/01 17:01

ゆくゆくは個人でゲーム製作して生活するのが目的ですが、まずスキルアップも兼ねてゲーム業界に就職するつもりです。 (しかし私の経歴ですと窓口がかなり狭いのが現実です...正社員はもちろんほぼ一切の案件の条件に引っかかりません????) ちなみにunityの入門書は既に一通り読んでおり、UnityEngineの概要は把握してます。 完全な2Dのレガシーなゲーム位ならなんとか作れます。
Qicken

2020/05/01 17:06

コードにはないですがlistやdictionary やlinqなども把握してます。2048の制作では実際に使用したので基礎構文は(手元に辞書さえあれば)問題ないと思います。
Hawn

2020/05/01 18:07

その辺り理解出来ていて2048の様なゲームを再現出来るのであればやはり結構なレベルです。 専門校出の就職可能ラインの人でも相当苦労すると思います。 Unityの専門書というのがどの事を指しているのか判りませんがそのモチベーションや進捗を考えると十分じゃないでしょうか。 私は会社にUnity本がほぼ全て置いてあったので7割は読みましたが特に難しい内容のものは無かったです。 シェーダプログラムが取っ付き難いという事とAR・VRが試すの面倒という程度でした。 就職優先であれば勉強分野は幾らか絞ってやっていくと良いです。
Qicken

2020/05/02 06:06

簡単なものからゲーム製作に着手することにしました。抽象的な質問に対し真摯な回答ありがとうございます。助かりました。
guest

0

まぁ、私の意見なので気にしなくても大丈夫だと思います。実際に、ゲーム開発目的にこのサイトを利用している人も結構いるので、そうした回答をしてくれる人をフォローして直接聞くなどすると回答がすぐつくと思います。

投稿2020/05/01 14:03

Kirby2318

総合スコア69

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

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

0

多分ここのサイトにunityの質問をすると低評価つくと思うから避けたほうがいいかもしれない。unityでc#使っているってだけで、unityとc#全く関係ないからね。c#の基礎知識はわかるけど、using ディレクトリーがunityになるとわからない人も多いので、解答がつきづらいと思います。

投稿2020/05/01 14:01

Kirby2318

総合スコア69

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

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

Zuishin

2020/05/01 14:04

Unity の質問たくさんありますが。
Qicken

2020/05/01 14:18

質問が具体性に欠けていいるので回答がしづらいのだと思います。申し訳ないです。
Kirby2318

2020/05/01 14:22

こちらこそなんか回答になってなくてごめんなさい。
Kirby2318

2020/05/01 14:27

質問があるものの不適切なのは変わりないですけどね、unity関係の質問は削除依頼すれば対応してもらえますし。間違ったことは言ってないかと思います。
Zuishin

2020/05/01 14:39

そんなバカな。タグまであるのに。
Kirby2318

2020/05/01 15:34

タグはシステム上のアルゴリズムで自動生成されるものじゃないのかな?
Kirby2318

2020/05/01 15:35

まぁ、悪いことをしているわけでもないですしそんな多大なことではないとおもうけどね笑
Tto777

2020/05/01 16:16 編集

何でそんなズレた事を自信満々に書き込めるのでしょうか? TeratailはUnity非推奨ではありません。 この質問はプログラム自体の質問では無く人生相談の類なのでマイナスは付きやすいですが、Unityが駄目といった事には繋がりません。 それに名前空間がUnity系になっていようがC#を理解出来てれば大抵の人は理解出来ます。 一体どこを見てそんな考えに至ったのか興味あります。 初心者に嘘を教える荒らし行為なら即刻止めて下さい。
dodox86

2020/05/01 16:56 編集

>回答者さんへ Unity。少なくとも私にとっては大変興味深いソフト開発用プラットフォームですし、プログラミング言語として今はC#に落ち着いているようですが以前はJavaScriptも扱っていて、このこと自体を取っても不適切なものとは到底思えません。ゲーム自体、突き詰めればグラフィック、アルゴリズム、物理計算、AI(機械学習系)など、高度なプログラミングのトピックがたくさん詰まっているとの認識です。その一端を担うUnityをそう評価するのは不当だと考えます。
dodox86

2020/05/01 23:21 編集

あまりな内容に本回答者の過去質問回答を確認せずにコメントしてしまいましたが、スルーすべきものだったようです。ちなみに「using ディレクトリー」と言う用語は存在しません。UnityのC#スクリプトにあるusing UnityEngine; のことを指しているのだと思われますが、usingディレクティブ(using directive) です。[一部間違いがあったので修正]
Kirby2318

2020/05/05 09:39

その質問ではありません。すでに運営に削除してもらいました。テラタイルを始めた時に最初の注意書きでプログラミング以外のことは聞かないようにしましょうとありましたが、特に多くのユーザーがUnityの質問をしていたので自分もそれに試みたのですが、普通に低評価つきました。仮に質問が問題なかったのであれば、運営は削除しないはずですが、なぜ削除要請を運営側は引き受けたのでしょう。ふさわしくない質問だと見たからなのではないのですか?それとも、私が相当運が悪く変な輩に八つ当たりされたのだろうか?それか質問の仕方が悪かったのだろうか?特に変な質問だったのかは心当たりないのですが。。 そして、特にここで荒らすために来たわけではありませんし、私自身も勉強をしているからこのサイトを利用させていただいています。この件があったのもあって、運営の意見メールにて様々なゲームエンジンの質問ができるようにしてくださいといったぐらいです。こうしたことが起こったのでそれを解釈して一つの意見として言わせていただいただけなのですが、なぜ嘘になるのでしょうか? 何か解決策でもあるのであれば、まだ使い始めたてなので、どのように質問をするのか?どんな感じで質問をした方がいいのか?低評価を受けて何も問題がないのであれば、私もUnityの質問をし続けたいのですが、低評価のせいで回答を得られにくくなるとかそのような仕様が仮にあったとするなら困ります。なので、叩くだけでなく解決策も述べて欲しいのですが。。。 using ディレクティブですね。入門書にもありました。ご指摘ありがとうございます。
Kirby2318

2020/05/05 09:40

長文失礼します。そして、ご迷惑と誤解を招きましてすみませんでした。
len_souko

2020/05/05 10:02

>テラタイル テラテイルですねトップページのページタイトルに「teratail【テラテイル】|ITエンジニア特化型Q&Aサイト」とあります > その質問ではありません。すでに運営に削除してもらいました。 既に削除した質問はこちらでは確認できません。僕はあなたの記述を見て名前から質問一覧へ飛んだだけです。そこでは一つしか質問がなくUnityの質問でマイナス評価がなかったのでそのように判断しました。ところでUnityならマイナス評価がつくという主張ですが残しているその質問はマイナス評価になっていませんよね?teratailとはプログラミングに問題解決をサポートしますとありますので、Unityを使用したプログラミングのことではなくて例えばUnityで作られたゲームに関してのゲームプレーヤーとしての質問だったりしていませんか? 中にはこんなゲームがやりたいけど誰か知っていますか?というような質問を過去に見た気もします。 そういうようなのは別のところで聞くべきですし、プログラミングのことであっても推奨すべきでない質問が色々あります。学校の課題の回答を求めることや自分デコーディングせずに他人にコードを作ってくださいといったものなど 何かしら問題があった内容だったからマイナス評価がついたはずです 個人的にUnityでマイナス評価のつくことが多いと感じるのはC#でコーディングするのにC#のことを一切学ぼうとせずにコピペできるコードを要求する、質問ではなくてプログラミングを無料で依頼するようなことが多いのでは?という気がしています。もっともタグでUnityを僕は見ていないのでC#で引っかかったものだけだから違うかもしれませんが。 あと、teratailの運営に対しての意見やおかしいと思うこと他の人に確認するのならteratailのタグがあったはずなのでそっちで「teratailでUnityの質問をするとマイナス評価がつきますがなぜなのでしょうか?」とでも質問を立ててみてはいかがですか?このページの質問とは完全にかけ離れた内容なので質問者さんに迷惑です。
Zuishin

2020/05/05 10:21 編集

普通に考えて、Unity の質問を二つして、一つに低評価がついてもう一つは無事なら、Unity は低評価の原因じゃないと思っていいんじゃないかと思いますが。
len_souko

2020/05/05 10:28

どう考えてもそうなのにUnityのせいだと本人が主張するだけでなく、他人の質問にまで「Unityだから低評価だ」という回答としてつけて、それを迷惑行為だと思っていないようなので隔離すべきかと。少なくともこの質問につけるべき内容じゃないはずなんですよね。今気づいたけど回答でも何でもない妨害を2回もやってるんですね。(これともう一つ上にある回答?) いい加減質問者さんに迷惑なので以降は放置します。
Kirby2318

2020/05/06 12:26

回答ありがとうございました。特に私の質問がなかったことでそのような判断をされたことはことらも存じていますので、気にすることはないのですが。スクリプトリファレンスの中にある。Unity.Engineが2Dそれとも3Dのどちらに特化したものなのかということでした。そのほかにも色々書いていたのですが、これ以上説明しても何にもならないので割愛させてもらいます。 これからは一切自分の自己判断的な意見を述べずに極力迷惑行為と思われることを避けます。以降テラタイルのタグを利用して質問するアドバイスを今後参考活用していきます。
Zuishin

2020/05/06 12:32

それは低評価つくでしょうね。ドキュメントの基本的なところ読めばわかることなので。
gentaro

2020/05/06 12:38

失礼ながら「テラタイル」でなく「テラテイル」だ、という指摘が入っているのに直せないところを見ると、ふつうに読解力というか、なんかすごく基本的な資質の部分で疑問を持たれちゃうだろうし、こんな短文のコメントですらちゃんと読めないなら、入門書やリファレンスの類もちゃんと読まずに質問しているから低評価されてるんじゃないの?と思ってしまいますが。
Kirby2318

2020/05/06 14:11

テラテイルですね、気づきませんでした。すみません。リファレンスを読んで確かに自分の中では3Dということで認識しました。しかし、特化性についてはっきり書かれていなかったり、そのため2Dでは使えるもののオブジェクトが3D扱いになるので、実際に不具合が発生しやすい的なことを学んだので、その認識が正しいのかを確認したかったような質問でした。読解力の低さはADHDもあって今更だしどうしようもないことだと思っていますが、基本的に読解力より不注意などの方が多いのでご理解ください。だからと言ってそれを盾にするつもりはないですし、他人より理解するまでには時間はかかります。よく入門書など一度二度では理解しないこともあります。書いてあったのに、読んだはずなのにあとあと読んで気づくことがあります。自分がした質問の中で、publicの役割について質問したのですが、ドキュメントに書いてあると指摘を受けて、「あれ、読んだのに」と内心思ったのですが、皮肉なことに書いてありました。何思われようが気にすることはないですが、やはりそうした部分でネットでもそうですが、人との関わりに失敗しがちなので、ご指摘はすごく嬉しいですし、今自分でも書いてて自分の弱点というものに気づけたので、、今後気を付けていきたいと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問