単にC#の文法をおさえるものではUnityと結びつくのでしょうか。
あんまり結びつかないと思います。
Unity独自の仕様も多い為、既に基礎的なもの(変数、メソッド、if文等)ネイティブC#に手を出す必要は無いと思います。
(逆に「ある程度Unityに習熟した上で、更にブレイクスルーする為にC#を学ぶ」というのはアリかもしれませんが)
過去に同類の質問もありますのでこちらも参考に。
C# - Unityの学習方法について(127058)|teratail
上達するには
他の方と被りますが、**「作る、調べる、理解する」**の3点が重要かと思います。
作る
作りたいものを作ろう、というと大体高みを目指しすぎた結果挫折することが多いので、時にはハードルを下げるのも大事です。
はじめてゲーム開発する前に知っておくべきこと - テラシュールブログ
調べる
Unityは日本語の情報も多いので、ググれば大体のことが分かります。(私は書籍不要派です)
ただし2018年現在、Unityはどんどんバージョンが進んでいますし、Assetもバンバン出ています。
1年前は回りくどい方法をしなければ出来なかったことが今では簡単に出来たりしますが、その反面で(WEB・書籍問わず)掲載されているコードが古くなっている可能性もあります。
また、個人ブログ等の場合は冗長なコードになっている場合もあるので、複数サイトを見てみるのがいいかと。
**「これはいつの情報か?」「もっといい方法はないか?」**を常に気にするといいと思います。
理解する
単に文法を記憶するのではなく**「このコードはどういう意味か」「どうしてそれを使うのか」**を理解するとトラブルが減ったり、応用が効きます。
プログラムは1つのやりたいことに対し、実装方法が複数あるケースが多いです。
見た目上の結果は同じでも根本的に仕組みが違う場合もあるので、どれが最適なのかを考える為にも理解は必須になります。
(例えばgameObject.SetActive(false)
とrenderer.enabled = false
とDestroy(gameObject)
は、見た目上の動きは「オブジェクトが画面上から消える」なんだけど実態がそれぞれ違う)
などと色々書いたけど
過去の自分が同じ回答してた。
C# - Unityについての学習方法(112819)|teratail
teratail内だけでも「unity 書籍」「unity 学習」とかで検索すると色々ヒットするのでそちらもご参考に。