質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

15349閲覧

Unity(5.6) / ugui / 「画像の大きさは2のべき乗にする」というルールについて

sukiyakigozens

総合スコア28

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/07/14 20:36

###前提・実現したいこと
Unity初心者です。 uguiでアンドロイドゲームを制作しておリます。(unity v5.6使用中)
フォトショップでボタン画像(PNG形式)を作っております。
「画像の大きさは2のべき乗にする」というルールについて質問させてください。
(APKファルのサイズが大きくならないようにしたいと考えております。)

質問1
例えばUnityのシーン上で40 x 40ピクセル という「2のべき乗ではない」大きさで使用したい場合、
フォトショップで2のべき乗に準じて64 x 64ピクセル の画像を作り、
Unityのシーン上で40 x 40ピクセルに縮小する形で問題ないのでしょうか?

また、Unityのシーンで画像を縮小する場合、
縮小後のピクセルの大きさが、整数ではなく、
大きさが40.25ピクセル、40.5ピクセル というような
端数になっても問題ないでしょうか?(またはスケールの値が0.25、0.73等)

つまりUnityのシーン上で縮小の際、大きさを端数にすることより、
整数よりもメモリを多く使用してしまうということはないでしょうか?
(最後のAPKファイルの大きさを心配しております。)

質問2
例えば、128 x 64ピクセルのような横長な画像の場合でも、
画像に透明の空白を含めて、正方形の128 x 128ピクセルで作る方がよいのでしょうか?

すいませんが、ご教授よろしくおねがいいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

1については、Unity上でレンダリングする際の大きさを変えるだけではAPKのサイズへの影響はないかと思いますので、問題ないのではないでしょうか。試しにImageオブジェクトのWidth、Heightを変えて(その他設定は新規プロジェクトのデフォルト)ビルドしてみましたが、サイズに違いはないようでした。

2については、128 x 64ならば縦横のそれぞれの長さは2のべき乗になっているので、PVRTC圧縮以外ならいけると思います。
(Imageオブジェクトではなく)画像アセットのインスペクタの下の方に出てくるプレビューに、どういうフォーマットで圧縮されたかとか、サイズがいくらかといった情報が表示されるかと思いますので、それをご参考にいろいろ試してみてはいかがでしょう。

投稿2017/07/15 02:12

編集2017/07/15 02:17
Bongo

総合スコア10807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sukiyakigozens

2017/07/15 05:40

ご回答ありがとうございます。
guest

0

まず、なぜテクスチャが2のべき乗でないといけないのか。
それは単純に3Dゲームはポリゴンにテクスチャを割り当てていて、
明示されるまでは同じテクスチャを使いまわすという処理がされています。
使いまわすということは、そのテクスチャ(色合いと座標)を使いまわすわけですが、
その座標がfloat型なんです。

このことから、float型の浮動小数点(IEEE754)という規格は2の累乗でなければ、
有限小数として表現できないという条件がつきます。
簡単に言うと2のべき乗にしないと2進数に入れることが出来ないから、
強制的に2進数に入るように調整される。(たしか四捨五入される)
そうすると、座標位置が四捨五入されて微妙にずれてしまうわけなんですね。
これを防ぐために、2のべき乗にしてくださいねってことなんですね。

それを踏まえて質問にお答えします。

質問1
2のべき乗でなくても2Dであれば使えると思います。
インポートする際だったと思いますが、そのまま使うか一番近い2のべき乗にするか選べたはずです
シーン上で大きさやスケールが小数点以下にしても問題は無いです(たぶん収まるように数値が丸められます)

Unityのシーン上で縮小の際、大きさを端数にすることより、
整数よりもメモリを多く使用してしまうということはないでしょうか?
(最後のAPKファイルの大きさを心配しております。)

この部分が何をいいたいのか分かりませんが、例えばAsset内に1920×1080のテクスチャをインポート
それをシーンに配置、1/10スケールで表示したとします。
スケールを変えたところで元画像のメモリを食うでしょうし、実行ファイル(APK等)は当然大きくなります。
そんなことをするより、最初から19210.8(四捨五入して19211)で画像を作ったほうがよくないでしょうか。

投稿2017/07/15 02:38

pikumin001

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sukiyakigozens

2017/07/15 05:40

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問