つよつよエンジニアになるには、公式ドキュメントを読むことが大事だと、誰かが言っていた。
というわけで、仕事で主に扱っている『Unity』の公式ドキュメントを通読してみた。
→実際読んだのはコチラ(2021.3)
サイドバーには23の項目があるが、それぞれの項目に深いネストがあり、機械的に計測すると1960のページがあるよう……。
関係ないところは飛ばしつつ、1か月以上かけて流し読みしたので、役立ちそうな部分や面白かった部分を紹介してみます。
読んでいる際の筆者の指向性は以下の3点。
・Unityならではの仕組みを勉強し直す。
・Unityを使ってAndroid+iOSのアプリを作ることを想定(ゲームに限らず)
・個人的に面白いと思ったことは調べてみる。
では、おすすめのページを以下に記していきます。
特にNumeric field expressionsについて。
複数のオブジェクトを規則的に並べたいとき、例えば、position.xにL(0,10)に入力すると、その範囲で規則的に配置してくれる。
手動でUIを均等配置したいとき、覚えておくと使えそう。
〇ガベージコレクションのベストプラクティス
〇Unityにおける最適化
Unityのパフォーマンスを上げるうえでの基礎知識。
中でも「文字列とテキスト」の文字列の連結処理に関する注意書きは、自分でも引っかかったので感慨深い。
for文などで、str += "add string" のようなコードをループ処理すると、大量のメモリを消費するため、GCが起きて一瞬止まることになる。
そういうときはStringBuilderを使いましょう。
Assets
Editor
Resources
StreamingAssets
など、見たことあるフォルダ名は、Unityの予約語でした。
どういう役割や機能を持っていたのか、
もしも知らずに名前変えてしまうと痛い目に合いそうなので、1度目を通しておくと安心です。
iOS用プラグインのお作法について。
プラグインをそのまま使うならいいけど、改造するときなどは最初のとっかかりとして、この辺りを知っておきたい。
おそらくプログラマの本業にもっとも使う領域
実務経験があるなら、ほとんど知っているとは思うが、
せめてこのカテゴリ以下については目を通しておきたい。
この項目を知らなくてもコードは書ける。
だが、知らずに自分でcommon関数を作らないためにも見ておきたい。
例えば、「ある数値をmin-maxの間に納めたい」という場合、
if(x < min){ x = min; }if(x > max){ x = max; }
みたいなコードを書くこともできますが、
実はそういうユーティリティは、ここに入ってるので、下記関数で一発。
x = Mathf.Clamp(x,min,max);
(私はこれまで、Clamp関数を何度も自作しました……。反省。)
ー番外編ー
プログラマは触らないかもだけど、個人的に面白かった仕組み2戦。
3D空間を扱うとき「ポリゴンが形を作って、テクスチャを張り付けて」というのが基本のイメージだけど、細かい凹凸パターンをポリゴンで真面目に作るとデータ量がマッハ。
大まかな形はポリゴンで作り、テクスチャ側で凹凸をつける仕組みが法線マップ。
ポリゴン上は平面なのに、ちゃんと影ができるぞ!
〇色空間
リニア色空間とガンマ色空間について。
光の強さを0.0から1.0まで均等に割り振ったのがリニア色空間ですが、
人間の目は、明るさに対してよく反応するため、白が強く見えてしまいます。
そこに補正を加えたものがガンマ色空間です。
「なんか思ったより明るい/暗い」という時には、この辺りが怪しいかも。
以上。
他にもシェーダとか、URPとか、知っておきたい項目はいろいろあるので、
通読でなくても、ちょこちょこ公式ドキュメントを読みましょう。
今すぐどこかで使えるものではないけども、いつかどこかで役に立つはず。
どんな分野にも基礎練習ってあると思いますが、プログラムにおいてはこういうことなのかも?