個人的UnityTips
目次
初めに
こんにちは!
3回生のコーディング課のTakaakiです。
アドカレもこれを含めてあと3回ですね。
初めの記事を書いたのが、遠い昔のような、つい最近のような不思議な感じです。
今回は個人的UnityTips!
大学入学からUnityを触って、便利な機能、要素を大小ごちゃ混ぜで紹介していきたいと思います。
正直、Tipsってレベルじゃないものばっかりですが、各紹介は軽い内容に納めます。
“便利だな”とか”今から使いたいな”とか思った要素は自分で調べてみることをおすすめします。
私自身の理解度が足りてないものも、便利なので概要だけでも紹介していきます!
何か1つでも持って帰ってもらえるものがあると幸いです。
DOTween
最初に紹介するのはDOTween!
数値などを徐々に変更できます!
これだけ聞くとめっちゃ地味な気がしますが、この効力は絶大です!
例えば、オブジェクトの位置を(10f, 0f ,0f)まで5秒間で移動させたい!
あなたならどうプログラミングしますか?
updateでtime.deltatimeをかけて……、コルーチンで……など色々あると思いますが、どれもめんどくさい!
DOTweenならこれ1行でかけます!
transform.DOMove(new Vector3(10f, 0f, 0f), 5f);
DOTweenはこの機能でアニメーションなどを簡単に実装できます。
画像を薄くしていく。音量を徐々に大きくする。などなど色々なことができます!
ゲーム中の場面転換などをより違和感のない、スムーズなものにお手軽に実装できます。
無料で使用できるので、使い倒しましょう!
https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676?locale=ja-JP
(有料版はさらに便利になるみたいですよ!)
DOTween始めようと思った方は、以下の記事がおすすめです。
Unity DOTween 入門
https://qiita.com/broken55/items/df152c061da759ad1471
Cinemachine
お次はCinemachine!
Cinemachineはカメラ関連の問題をすぐに解決できます!
キャラクターをカメラで追従したい。
しかも、キャラクターから少しだけ遅れて……
それに、キャラクターが画面のこの範囲からでないように……
でもって、あの範囲はカメラで映したくない……
全部Cinemachineで、ノーコードで解決できます!
他にもカメラを切り替えたい、移動させたいなどなど大体のカメラの問題はCinemachineで解決できます。
私自身Cinemachineを入れないプロジェクトはないぐらいに、便利です。
ぜひ、触ってみましょう!
Timeline
TimelineはUnityの機能の1つです。
機能としては複数のアニメーションをまとめて、音をつけたり、スクリプトを制御できるものです。
アニメーションについては今年のアドカレを。
アニメーションを組み合わせて、よりリッチな演出をしてみましょう!
以下、おすすめの記事
Prefab
お次はPrefab!
これについては、Unityでゲームを作るならほぼ必須級の機能です!
Prefabは複数同じ(似た)オブジェクトを配置したいときに大活躍します。
例えば、似た見た目のボタンをゲーム中で大量に使用しました。
仕様変更や新しい素材があり、テキストのfontを全部変えることになったり、ボタンの背景画像を全部変えたくなったらどうしますか?
一々、全てのボタンを確認していく訳にはいきませんよね?
prefabを使用していれば、1度の変更ですべてを変更できます。
ほんとに必須級なので、知らなければぜひこの機会に学んでみてください。
おすすめの記事
UnityのPrefab(プレハブ)とは?使い方まで徹底解説
https://shibuya24.info/entry/unity-prefab
ScriptableObject
お次もUnityの機能です!
ScriptableObjectはデータを扱うことに長けています。
例えば、色々なEnemyの情報(名前、画像、HP、攻撃力とか)を1つのデータにまとめて、保存できます。
ゲームの規模がでかくなるほど必須級な知識になります。
おすすめの記事
【Unity】今更ScriptableObject入門
https://qiita.com/4_mio_11/items/a7d8967b853cef4385cd
ScriptableObject改
上級者向けのScriptableObjectの使い方も紹介。
(やっとTipsっぽい内容)
ScriptableObjectを使用して、コンポーネント・シーン間でのデータ共有ができます。
詳細は下記のサイトからお願いします。
便利な反面、上手く扱わないと後々大変なことになる可能性を秘めているので、ご使用は計画的に。
RawImage
UnityのUIのRawImageの使い方の1例を紹介します。
UI上にUnityのカメラから得た画像を表示する方法です。
UIのImageはUnityを使用している方なら、よく使うのかなと思います。
(私は使いまくってます。)
ImageはSpriteを表示しますが、RawImageはTexture2Dを表示します。
Texture2Dの中に、Spriteという分類があります。
つまりはRawImageはSpriteもTexture2dも表示できます。
(ImageはTexture2dを表示できない。)
ただTexture2Dって基本見ることがないと思います。
イラストなどをUnityにインポートすると基本Spriteになってると思うので。
RawImage、基本的にはImageよりも性能が低いので使用することはありません。
ただし、Imageよりも表示できる画像の種類が多いのは強みです。
実はカメラが得た情報はゲームの画面に表示する以外に、Textureに書き込むことが可能です。
(書き込む設定にするとゲーム画面の方には映らなくなるので、複数カメラを用意しましょう。)
書き込まれたTextureをRawImageで表示することで、カメラから見た視点をUI上に表示が可能になります。
私が関わったゲームではとととの真上からステージを見た画像などがそうです。
動画で見ると動いているのがわかると思います。
とととについてはこちらの記事を。
また、これを使用して、ドロステ効果を起こしたゲームも制作しました。
この機能を使って面白いことしてるのでプレイしてみてください。
https://unityroom.com/games/droste_tube
詳しいやり方は以下の記事から
AudioMixer
Unityの機能の1つで音関連のものです。
AudioMixerを使えば、いろいろな音源をミックスしたり、それにエフェクトをかけたり、マスタリングを行ったりすることができます。
アドカレでAudioMixerを使った音量調整機能を書いたので、是非に。
マルチシーン
シーンは同時に1つしか開けないと思ってませんか?
実は、そんなことはないんです。
1つのゲーム画面でも、分割して複数のシーンにすることで、複数人での制作でのコンフリクトを簡単に避けることができます。
しかし、扱いは難しいので上級者向けです。
マルチシーンを勉強するのにおすすめの記事
アスペクト比
ゲームのアスペクト比気にしてますか?
Unityのエディター上では簡単に固定できるので、忘れることもありますが、ビルドしてプレイしてみるとUIなどがズレることがあります。
また、スマホ向けに制作をしているとさらに顕著かもしれません。
スマホの画面の大きさは機種によってさまざまです。
以下の記事のようにやれば、簡単にアスペクト比を固定できます。
万が一のバグのためにも、やっておくと安心です。
Unityの画面のアスペクト比と解像度を自動変換 全スマホ・複数解像度に対応させる
https://3dunity.org/game-create-lesson/clicker-game/mobile-adjustment/
unityroom
制作したゲーム、公開してますか?
作ったゲームをたくさんの人にプレイしてもらいたくても、Windowsのビルドデータを配布するのは大変だと思います。
そんなあなたにunityroom
WebGLの形でビルドできれば、簡単に公開できます。
せっかく作ったゲーム、どんどん公開してどんどんプレイしてもらいましょう。
Ranking
スコアをオンラインで競うことができれば、楽しさが爆増するタイプのゲームってありますよね。
そんなゲームを作ってみたいあなたにこの記事を
unityroomを運営するnaichiさんが作成されたRankingのサンプルです。
簡単にRankingを実装できるので、ぜひ使ってみましょう。
UniRx・UniTask
Unityをやる中で、習得難易度が高いにも関わらず浸透した便利なアセットといればこの2つ。
詳しい説明は省きますが、めっちゃ便利で使い始めたばかりの私も既に手放せないものになってきています。
UniRxはイベント処理が得意です。値の監視などもできます。
UniTask は非同期処理が得意です。コルーチンなんか使ってられるか
Unity初心者にはおすすめしませんが、いつか勉強して損はないと思います。
(私自身勉強中ですが)勉強するなら以下の記事がおすすめです。
UniRx入門シリーズ 目次
https://qiita.com/toRisouP/items/00b8a5bb8e7b68e0686c
2022年現在におけるUniRxの使いみち
https://qiita.com/toRisouP/items/af7d32846ab99f493d92
UniTask入門
https://learning.unity3d.jp/2974/
UniTask機能紹介
https://qiita.com/toRisouP/items/4445b6b9bf00e49eb147
さいごに
最後までお読みいただきありがとうございました。
そして、お疲れ様です。
駆け足気味でしたが、色々なものを紹介できたかなと思います。
まだ紹介したいもの(RectTransfromのanchorとか、LayoutGroupとか……)もありますが体力的に限界なので、今回はここまでにしておきます。
またTipsってレベルじゃないメジャーなものまで紹介しました。
理由は、メジャーなものも機会がなく、知ることができなかった過去の私を救うためです。
過去の私のような人間に届くことを祈ります。
それでは、またの機会に。