🙌
Unityを触れるようになろう〜〜〜
これは何
Unity(そしてC#)を触ったことがない人が、とりあえずキャッチアップするための順番だてた学習ルートです。
これを順番にこなすと、最低限の(ゲームの楽しさの部分以外の)ことを知ることができます。
メンターをつけて想定時間40h以内で実施すると良いのかなと思いました。
// もっと楽しさを重視した講座とかもあると思うので、無味乾燥なこれでごめん…
こんな感じのiOSやAndroid、あるいは他の技術領域の文章も読んでみたいなと思いました。(誰か書いて!)
お作法を学ぶ編
- Unity+VScode(あるいはRiderでもいいけど)をインストールできる
- プロジェクトを作る
- MonoBehaviourのスクリプトを作る(Hello.cs)
- Debug.Log() をStart()に書ける
- このときVScodeとかでDeb…くらい書いたらtabで補完されることを確認しましょう
- DotNetSDKが入っていないと起きがち
- UnityEditor のExternal Toolsにエディタが設定されてないと起きがち
- デバッグ実行でブレークポイントが貼れることを確認する
- MonoBehaviourのC#スクリプトに関数を追加できる
- 空のGameObjectをシーンに追加する
- Hello.csをGameObjectにアタッチする(UnityEditorでAddComponentしてください)
- Hello.csのスクリプトに現在時刻をDebug.Log() で出力する関数(PrintCurrentTime関数)を作って見る
- Start()でその関数を呼んでみる
- エディタの再生をしてDebugLogに出力されることを確認する
- キーボードのAキーを押したらPrintCurrentTime関数を呼ぶようにする
- Hello.csの関数を別のクラスから呼ぶ
- 別のMonoBehaviourのC#スクリプトを作成する(Controller.cs)
- Controller.csになんらかの方法でHello.csの参照を持たせる
- [SerializeField]を使ったインスペクタ参照など
- Controller.csのキー入力でHello.csのなんらかの関数を呼ぶ
- コンパイルエラーの赤文字を追える
- 赤い波線がエディタで引かれたら気付ける
- QuickFixができる
- UnityEditor上でGUIを組み立て、ボタン操作を割り当てる
- 検索単語としては「uGUI Button Canvas」あたりです
- CanvasとButtonとTextを配置する
- UI上のボタン入力でHello.csの現在時刻表示をUIのTextに反映する
- WebCamTextureのpreview開始、終了を行えるボタンを配置して、カメラプレビューを実装する
- 他に関数を増やしたり、適当な試行錯誤をここで行う
- 複数Canvasの切り替えを行う
- gameObject.SetActive()を使うことで複数のCanvasの表示切り替えを作る
- はじめに、2枚目、3枚目、みたいな3Canvasを用意して、戻ると次の画面に進む、を表示して見る、とか
- 元気があったらポップアップ(ダイアログ)を出せると良い
- これはBlockingPanelの処理を学ぶ話
- 複数シーンの遷移
- シーンを跨ぐDontDestroyOnLoadの使い方
- シーン遷移中に蓋をするロゴを出しておく、など
- ここまでをやったら、適当なUnityの教科書をガーっとやると良いと思う
Unity共同作業をするためのステップアップガイド編
- 実機ビルドして試せる
- Switch Platform
- ビルドシーン追加
- AndroidやiOSに実機転送してlogを眺めることができる
- Android、iOSともにスマホを開発者モードにするのを忘れずに
- logcatとかXcodeで確認する
- 縦画面にする、Scaleを合わせる
- WebCameraのパーミッションに注意
-
adb command -r install
などを叩ける
- Githubなどでbranchを切ってPRを出せるようにする
- reviewも経験すると良い
- ↑で作った複数Canvasをprefabにしておく
- それぞれの画面を装飾してみよう
- (本当はおすすめではないが)
public static Action<T> HogeAction
を用意しておく- 他クラスにbroadcastをする。
- 他クラスはOnEnableとOnDisableで購読開始、停止をする
- Pure C# クラスを作ってHello.cs から参照する
- Controller.csからprefabの Instantiateを行う
- 可愛いパーティクルを5秒出して消えるprefabなどを出すのがおすすめ
- ControllerからCoroutine(コルーチン)を使ってみよう
- パーティクルを生成→2秒後にColor=redに変更→3秒後にDestroyとやってみよう
- 箱のprefabをplayerと名付ける
- wasdで移動できるようにする
- PackageManagerから何かを追加する
- InGame Debug Console https://github.com/yasirkula/UnityIngameDebugConsole を追加
- gitURLでのインストールは作業端末にgitが入っていて、環境変数のパスが通っている必要がある
- パスを通しておいてください。通した後PC再起動が必要かも
- prefab一個置くだけで動くので良い
- WebAPIを叩いてみる
- https://httpbin.org/ というサイトに試してみる
- UnityWebRequestに慣れましょう
- ↑のパーティクルで書いたCoroutineの書き方を復習しましょう
- jsonのシリアライズとデシリアラズを覚えましょう
- 人の書いたコードとかプロジェクトを読もう
- 新規プロジェクトを作る
- このアセットをインポートする
- https://assetstore.unity.com/packages/templates/tutorials/unity-learn-playground-urp-109917
- ドキュメント、フォルダ構造を眺める
- エディタ再生する、実機ビルド、ブレイクポイントによるデバッグを試す
- Sceneを眺めてコンポーネントの参照関係を追いかける
- Managerっぽいものはどこにある?どんな単位でスクリプトは分けられてる?
- スクリプトを適当に変えてみる
- 知らないC# 記法があったら覚える
- ScriptableObjectの作り方とか
- MenuItem経由でのUI拡張とか
- この辺までであなたがUnityを触って楽しいと感じるかわかります。
- しんどかったらここら辺で有識者あるいは上司に相談しましょう。
- 新規プロジェクトを作る
もうチョット詳しくなりたい
この項目は書きかけなのと、優先順位がだいぶ悩ましい…
- ObjectPoolingの理解
- 既存のライブラリを使って良いので何か実装してみましょう
- 無限スクロールのチャット欄や大量のアイテム表示など
- エディタ拡張
- [Header]アトリビュートなどだけでも読みやすさが変わります
- Cameraの挙動
- FoVとか、SkyBoxとかFogとか
- Rigidbody,Colliderの衝突判定
- SpriteRendererとuGUIの違い
- UserPrefsでの値の取り扱い
- 画像データの解像度設定
- オーディオデータの品質設定
- ライティング
- UpdateとFixedUpdate
- Tween
- アニメーション系
- Assembly Definitions
- この辺はManagedなdllを作る話も関わってくる
- NativePlugin系
- ここに手を出すと一生NativePluginを書くルートに人生が分岐しがち
この辺まで分かったらソーシャルゲームのUnityクライアントエンジニア入門以前
を読んでおくと良いかも。(自薦ですみません)
Discussion