EEIC2019のぺんぎー1と申します。Qiita初投稿です。
普段はUnityを使ってゲームを作っています。個人製作・サークル・インターンなどいろんなところでUnityを使ってきて早3年ほどですが、日々新たな発見があります。
ここでは自分の経験から、あまり知られていなそうだけど知っておくといつかは使えるかもしれないUnityの標準機能を紹介します。
Unityのバージョンは主に2019.4系を使用していますが、ここにあげるものは大体2017以降なら対応してるんじゃないかと思います(未検証)
OSはWindows10です。
標準機能編
スクリプトのテンプレートを設定する方法
Unityエディタ上で新しいスクリプトファイルを作成するとデフォルトで以下のようなファイルができますよね。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
でもこのテンプレートで満足していますか?
例えばクラスを全てnamespaceに入れたいとなると、毎回namespaceで囲うのは面倒くさいですよね。
またUniRXを使うようになると、Update関数はいらなくなるんですけど、毎回Update関数を削除するのも手間ですよね。
そこで簡単にテンプレートを変更・追加する方法があります。
テンプレートはプロジェクトごとに設定する方法と、Unityバージョンごとに設定する方法があるんですけど、自分はプロジェクトごとに設定する方法をおすすめします。
(本当は全バージョン共通でテンプレートを設定できればよかったのですが、参照するディレクトリがバージョンごとに違うのでダメっぽいです。)
プロジェクトごとに設定する方法は
-
ScriptTemplates
というフォルダを好きな場所に作成 - そのフォルダの中に以下のようなテキストファイルを作成し、
79-Custom__C# Script In Namespace-NewBehaviourScript.cs.txt
と名前を付けて保存 - Unityを開いて
Assets/
直下にScriptTemplates
フォルダをD&D
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MyNamespace
{
public class #SCRIPTNAME# : MonoBehaviour
{
void Start()
{
#NOTRIM#
}
}
}
一度Unityを閉じてから再度開き、Create欄を見るとC# Script
の上にCustom > C# Script In Namespace
があるはずです。
それをクリックすれば、先ほど作成したテンプレートでスクリプトファイルが作成されます。
ちなみにデフォルトのテンプレートはWindowsの場合
C:\Program Files\Unity\Hub\Editor\201X.X.Xf1\Editor\Data\Resources\ScriptTemplates
にあります。
ここにテンプレートを追加すればバージョンごとに適用されますし、81-C# Script-NewBehaviourScript.cs.txt
を書き換えればデフォルトのテンプレートを書き換えることができます。
テキストファイルの命名規則ですが、
<表示順>-<Create欄に表示する名前>-<生成されるファイル名>.txt
となっています。
Create欄に表示する名前は__
(アンダーバー2つ)で階層化可能です。
参照
UIの位置・サイズを自動調整
Unityのレイアウトグループというコンポーネントを使用すると、子オブジェクトとして持つボタンやテキストなどを自動で並べてくれます。
レイアウトグループは3種類あります。
- Horizontal Layout Group
- Vertical Layout Group
- Grid Layout Group
Vertical Layout Groupの挙動 pic.twitter.com/JPKATnDbRI
— ぺんぎー.unity (@penguin_uts1) December 5, 2020
↑Vertical Layout Groupを使ってみた様子です。
ボタンの数に応じて自動でレイアウトされているのがわかります。
ただしボタンが多すぎてはみ出してしまう場合は下に伸びるようで、あまりきれいではありません。
次にContent Size Fitterというコンポーネントを紹介します。
これは子オブジェクトが収まるように自分のサイズを自動で調整してくれるコンポーネントです。
Vertical Layout Group + Content Size Fitterの挙動 pic.twitter.com/wd8VoKYuQ0
— ぺんぎー.unity (@penguin_uts1) December 5, 2020
↑先ほどのVertical Layout Groupを付けたImageに、Content Size Fitterを付けた場合の様子です。
ボタンの数に応じてImageが伸び縮みしているのがわかります。
ちなみに、TextにContent Size Fitterを付けると、文字の量に応じてサイズが伸び縮みします!
他にもレイアウトに関する様々な機能がありますが、闇が深い部分もあるので割愛します。
参照
簡単にきれいな文字を表示する
Text Mesh Pro(以下TMPro)を使おうぜ!という話です。
作っているのがゲームではなくて、他人に見せるつもりがなかったり、文字のクオリティにこだわらないのであれば標準のTextで十分かもしれませんが、そうでなければぜひ使ってみてください。
TMProは文字のスケールを大きくしても文字が粗くなりません!
以下標準TextとTMProのスケールを縦横2倍にした時の比較です
さらにTMProは文字の縁取りやグラデーションなどが簡単にできます!
あと、スプライトから自作の絵文字を登録できるのも魅力ですね!
TMProを使うデメリットとして、フォントを追加する作業がちょっとめんどいというのがあります。
またデフォルトのフォントでは日本語が打てないため、日本語を表示させたければ日本語対応のフリーフォントを追加するという作業が必須になります。
フォントの追加に関しては以下の記事が参考になります。
フォントの追加
その他参照
おわりに
時間的に余裕があればもっと書きたかったんですけど、無料アセット編とスクリプト編はまたの機会にします。
-
Twitter: @penguin_uts1 ↩