マイブログ リスト

2024年2月5日月曜日

Unity公式ドキュメントを通して読んでみた

つよつよエンジニアになるには、公式ドキュメントを読むことが大事だと、誰かが言っていた。

というわけで、仕事で主に扱っている『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用のプラグインをビルド

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とか、知っておきたい項目はいろいろあるので、
通読でなくても、ちょこちょこ公式ドキュメントを読みましょう。
今すぐどこかで使えるものではないけども、いつかどこかで役に立つはず。
どんな分野にも基礎練習ってあると思いますが、プログラムにおいてはこういうことなのかも?