【Unity】「ドット絵がぼやける」対処法を紹介

導入

spriteのぼやけを直すときは、素材となる画像の設定をいじれば良かったが、コードで作った(素材となる画像が存在しない)textureのぼやけを直すときは…あれ?どこをいじれば良いんだろう…。

――というわけで「texture ぼやける」と検索。

しかし、解決策が出てこない…。仕方なくUnityの公式ドキュメントで検索したところ、使えそうなコードを発見!

というわけで、使えそうなコードを見つけたので、Unityドット勢には是非知っておいてほしいコードを共有したいと思います。

コード

やっていることは、コードを使ってtextureのfilterModeをPointに変えているだけ。

テクスチャのぼやけを消したい場合

// どのtextureに対して行うか選ぶ
// (例1)
Texture texture = GetComponent<RawImage>().texture;
// (例2)
Texture texture = GetComponent<Renderer>().material.mainTexture;

// 今回紹介するコード(フィルターモードをpointに変更する)
texture.filterMode = FilterMode.Point;

スプライトのぼやけを消したい場合

スプライトのtextureに対して、さっきの処理をするだけです。

// どのspriteに対して行うか選ぶ
// (例1)
Texture texture = GetComponent<Renderer>().sprite.texture;

// さっきと同じ
texture.filterMode = FilterMode.Point;

いつ使うの?

冒頭でも触れましたが、「いつ使うか?」と聞かれたら、コード内で作ったtextureのfilterModeをPointにしたいときです。それか「ゲームの途中でfilterModeを変えるとき」とか(『Evoland』っぽいゲームを作りたいなら使うかも)。

あと、なぜコード内でtextureを作っているかといえば、「2DObjectの4方向から見たimageを作る手間を省くため」です。

↓ 実際に使う場面はこのような場面です。

https://nazenavi.com/2021/02/24/%e3%80%90unity%e3%80%91%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%ae%e3%81%bf%e3%81%a7%e3%83%89%e3%83%83%e3%83%88%e7%b5%b5%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%95%e3%81%9b%e3%82%8b%e6%96%b9/

参考文献

今回の参考文献は冒頭でも触れた通り、「Unityの公式ドキュメント(2021.1)」>「Filter Mode」

Unity公式ドキュメント – Filter Mode