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

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

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

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

Unity3D

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

Unity

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

Q&A

3回答

1220閲覧

他のプログラミング言語経験者がUnityを学習する場合はC#の基礎は省略してもよいのでしょうか

AriFeles

総合スコア0

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2021/12/04 03:19

編集2021/12/04 03:22

前提・実現したいこと

VRMを動かすため、Unityを学習したいと思います。
ついでにVRMを使ったゲームやツールも作ってみたいと思います。
あくまで趣味であり、収益化やゲームプログラマーへの転職は考えていません。

背景

私は全くのプログラミング未経験というわけではなく、職業訓練校でC言語、VBA、Java、PHPを学び、前職では数年間主にExcel VBAでマクロを作成を行っておりました。
現職ではMicrosoft 365の管理が主な業務であり、VBAに加えてPowerShellを使う頻度が多くなっています。その他、最新のライブラリやフレームワークはわかりませんが、JavaScript(jQueryのみ)やPHP(WordPress関連のみ)も少しだけなら書けます。

私は、仕事や趣味に必要な言語や技術はすぐに習得するのが早い反面、仕事や趣味に必要ではない言語や技術はなかなか習得できないという欠点を持っています。
例えば、M365管理で必要になったPowerShellは1ヶ月足らずで習得できました。同様にExcel VBAはExcelを自動化するため、JavaScriptはブックマークレットを作るため、PHPはWordPressのテーマを編集するため、その言語しか使えなかったので、使えるようになりました。
しかし、職業訓練校で学んだC言語やJavaは使う機会がなく忘れてしまい、3年前に人工知能に興味があって学習したPythonも活用できず忘れてしまいました。

発生している問題

実はUnityも3年前に一度チュートリアルに挑戦しましたが、それきりです。

3年ぶりにUnityに興味が出てきて学習しようと、Webページや書籍や動画を調べましたが、全くのプログラミング未経験者向けの情報が多いと見受けられました。

  1. 何らかのプログラミング言語の経験がある場合、C#の基礎は省略してもよいのでしょうか?
  2. VRMを動かしたい場合、VRMを動かす方法だけ学べばいいですか?
  3. 私が使ってきたプログラミング言語の知識で、Unityに生かせそうなのはありますか?
  4. Unityに挫折しないコツはありますか?

補足情報(FW/ツールのバージョンなど)

  • OS: Windows 10 Pro 21H1 (64bit)
  • Unity: 2018.4.36f1 (64bit)
  • IDE: Visual Studio Community 2017

なお、パソコンの入れ替えを予定しており、新しいパソコンにはUnityとVSは最新のバージョンを入れる予定です。

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

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

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

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

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

dodox86

2021/12/04 03:53

非難する訳でなく普通に不思議に思うのでコメントするものですが > 何らかのプログラミング言語の経験がある場合、C#の基礎は省略してもよいのでしょうか? なぜこういう質問が出るのか大変不思議です。Unityでプログラミングする上で、C#の基本部分で分からなくなったら、どうするのでしょうか。Unity経験者から「基礎なんか後回しでいいよ」とでも後押しして欲しいのでしょうか。UnityやVRMに限らないと思いますが、それらの判断がご自身でできないとすると、他のプログラミング言語や環境に関する知識も、少々疑問です。
hentaiman

2021/12/04 04:48

> PowerShellは1ヶ月足らずで習得 それはすごいですね。psとC#は関り強いので、習得できてるんなら基礎なんか出来ていて当然って感じじゃないですか?
Zuishin

2021/12/04 07:06

基礎を飛ばしてできる人がいることは否定しませんが、そういう人はこんな質問をしないので、飛ばしたらだめだと思います。 やってみればわかることをいちいち聞く人は、基礎を飛ばしてはいけません。
guest

回答3

0

他のプログラミング言語経験者がUnityを学習する場合はC#の基礎は省略してもよいのでしょうか

聞く前にやってみたらいいのでは?

そもそも赤の他人であるここの回答者は、あなたがどのぐらいプログラミングの基本知識を持っているか、C# の文法等は調べながらでも対応できるぐらいの知識は持っているかかなんてことは知る由もないから答えようがないです・・・ 

・・・が、私は No だと思います。ここの Unity 関連のスレッドの例を見るにつけそう思わざるを得ません。

直近の例だけでもこういうの ↓ があります。

https://teratail.com/questions/372209 アクセス修飾子を知らない
https://teratail.com/questions/372196 関数の使い方が理解できてない
https://teratail.com/questions/372052 比較演算子の使い方が変

上のスレッドの質問者さんには例に挙げてすみません。でも、ごく基本的な知識があればここで聞かなくても済んだはず。

このスレッドの質問者さんは絶対に上の例のような基本的なことは聞かなくても自己解決できるという自信があればやってみたらいかが?

投稿2021/12/04 06:38

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

何らかのプログラミング言語の経験がある場合、C#の基礎は省略してもよいのでしょうか

NO. 絶対にNo! 私の経験上、基礎をすっ飛ばすとろくなことになりません。
確かにfor文とかは概念レベルでは同じですが、書き方が言語によってはまったく違います。

たとえばC言語でのforはfor( i = 0; i < 10; i++ )…ですが、Pythonだとfor i in range(0,10): …のようにまったく違います。

さらに、自分が知っている言語には無く、初めてやる言語にはある概念もあります。Javaにはポインタは無いが、C言語にはあるとか。C言語やC++にとってのポインタはほぼ息をするようにかなりの頻度で使います。(軽いサンプル程度なら使いませんが、いざ自分用のソフトとかを作ろうとするとどうしても使わざるを得ない場合が意外と…)

C#やC++等には無いが、Pythonにはあるやつもあります。内包記法だったかな。

nums = [ i for i in range(0,10) ]のような独特の書き方になります。C言語系の人からしたら見慣れないと思います。(今だに違和感)

それを初見ですぐに使えますか?
私には無理です。

仮にほとんど似た言語だとしても、書き方とかが違うこともありますし、作法も違います。

JavaではArrayList<>はメソッドの戻り値として直接返すことはできないようですが、C#やC++では直接返すことができるようです。(名前が違ったりするが)

さらに、同じリスト構造でもC++ではstd::list, Javaでは LinkedListと全く違いますし、メソッド名も違ってきます。

なので基礎をすっ飛ばすと、やっぱり基礎をやる羽目になります。そうすると工数がさらに多くなり、逆に遠回りになってしまいます。

それよりはざっとでいいので、基礎部分をやる。そして、必要があればその都度深掘りして調べる…みたいな感じにした方がいいかと。

VRMを動かしたい場合、VRMを動かす方法だけ学べばいいですか

VRMはわかりませんが、大抵、その技術だけというのは厳しいです。たとえばコードのバグかと思ったら実はOSの問題だった…とか、少数同士の計算とかで結果がおかしいということで調べると、『誤差』が生じてのものだったりとか。

そういう風に、コードだけの問題ではなかったりします。VRMの専用機器では問題なくとも、コンパイラとかの不具合とかの場合もあります。(これは稀かもしれませんが)

なのでVRMのやつだけやっときゃいい…ってのはちょっと危険かもしれません。

私が使ってきたプログラミング言語の知識で、Unityに生かせそうなのはありますか

まともにやっていれば割と生かせるはずです。少なくとも、設計・コーディング・デバッグができれば。
設計に関してはできればちゃんとした仕様書を作れれば望ましいですが、趣味&独学だと厳しいので、軽く『どういう機能が必要か』とか『どういう流れでやるか』とかのようなものができればOK。

ゲーム系は専門外なのでわかりませんが、ソフト開発もWeb系も、ゲーム系もほぼ同じようにできるはずです。単に『基本的にテキストファイルにデータを保存していく』のか『基本的にDBに保存していくのか』とかみたいな、ところどころ違うだけじゃ無いかなと。(もちろん、作法やらなんやらの細かい違いはかなりあるが)

Unityに挫折しないコツはありますか

これは…すみません。わかりません。
ただ、『楽しむこと』でしょうね。

私は最初Web系をやろうとしていました。(主にJavaScript)
でも私にとって使える範囲が、
当時は狭く感じていました。(単に私の知識が足りなかっただけだろうけど)
ですが、C言語とかそういう言語で一括処理程度のものを作るのはかなり楽しいです。だから続けていられますね。

このことから、『楽しむこと』がカギだと思っています。(あくまで私個人の意見)


[追記1]

一つ目のやつ、『基礎を省略していいか』のことについて。

一旦、『C# 入門』とかで3〜4本ぐらいのサイトをざっと目を通します。
1本だけだと抜けがあることが多いです。サイトの場合はめちゃくちゃ多いので。
なので少なくとも2本、できれば3〜4本はざっと見る。

そして、書き方も含めて『自分が知っている言語での差がないか』を確認する。
上記でいう、『C言語とPythonのfor文の書き方の違い』みたいな差がないか調べる。
差があればそれを理解して使ってみる。

さらに、自分が知っている言語にない概念(内包記法やポインタ等)はがっつり学ぶ。
それでもまだ理解できないのなら『C# デリゲート』とかで調べたりして理解する。
この時点ではせめて概念レベルは理解すること。

そして実際になにか作っていく。ただし、まだこの時点では使いきれていないものが多いはずです。
それをさらに調べて…とかみたいにやっていく。

こういうふうにすれば、最初からがっつりやるよりも労力は少ないはずです。

投稿2021/12/04 03:53

編集2021/12/04 04:04
BeatStar

総合スコア4962

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

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

fiveHundred

2021/12/04 04:24

一応勝手に補足しておくと、VRMとは3Dモデルの形式の一つです。 https://vrm-consortium.org/ VRMではインポートを行えるUnityのアセットが存在するので、扱いは楽です。 まずは、VRMを読み込むところから始めるといいかもしれません。 とはいえ、普通に考えればVRM以外の機能(ゲームシステムなど)も作ることになるので、それだけでは当然無理でしょう。
BeatStar

2021/12/04 06:41

@ fiveHundredさん 補足ありがとうございます。(へぇー、3Dモデルのやつかぁ)
guest

0

なんで経験者は基礎の学習やらんでいいことになるってのが理解できませんが、
やりたくないならやらなくていいかと思います。

必要になれば嫌でもやらないといけないですが。

投稿2021/12/04 03:33

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問