seriruの技術屋ブログ

競技プログラミングやゲーム開発など技術に関することを発信します

Unityお勉強1日目

夏に向けてUnityのお勉強が必要になったので1日ずつ勉強したことをまとめていきます。

UnityとCSharp

Unityのコーディングでは主にC#を使います。
公式の初心者向けの説明には

スクリプティングとは、ゲームオブジェクトにアタッチされているスクリプトコンポーネントのことで、ゲームオブジェクトがどのように動作するのか、そしてどのように相互作用するのかを指示します。

今や、Unity におけるスクリプティングとは純粋なプログラミングとは異なります。純粋なプログラミングを行った経験がある場合、例えば実行できるレベルのアプリを作成したことがある場合は、Unity ではアプリケーションを実行するためのコードを作成する必要がないことに気付くでしょう。Unity が代わりにやってくれるからです。その手間の分だけ、Unity スクリプトではゲームプレイの方へフォーカスするのです。

細かい部分はUnityが面倒を見てくれるので、開発者はゲームの動きにフォーカスすることが可能です。大きいプロダクトになるとわかりませんが、簡単なゲームならものすごいスピード感で開発できるんですね。

といっても自分はUnity全くのド素人でチュートリアルで少し触った程度なので簡単にC#を勉強してから実際にゲームを作っていきます。

今回は、AtCoderのA, B問題をC#で解きまくることによって文法を学習しました。コンパイラのバージョンは古いですが、やっぱり未知の言語の学習には非常に便利です。また、他の人の回答も無料で見ることができるので回答に迷ったときやライブラリの使い方がわからないときなど、こちらも非常に参考になります。

atcoder.jp

以下に特に気になった文法をまとめます。

LINQ

SQLのようにメソッドをチェーンさせて配列などを作ります。具体的には以下のようなメソッド群です。

var s = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

返り値は var で推論させるのが基本です。この場合コンソールからの標準入力を文字列として受け取り、それぞれの要素に対して int.Parse (int型にparse) を適応して配列として返します。 すなわち sint[] になります。

また、対象を決めて配列に対してソートを行う OrderBy や重複を取り除くDistinct など様々なLINQが存在します。

ここらへんを参考にしました。

qiita.com

Generic

C++でいうテンプレート、Javaでいうジェネリクスにあたり、型を抽象的に表現することによって汎用的なメソッドやクラスを作るための機能です。

コレクションのライブラリなどの様々な型が使われる可能性があるクラス群に使われます。

参考

ufcpp.net


非常に雑だけどできるだけ毎日続けます... 明日は実際にUnity触る!!