Unity」カテゴリーアーカイブ

ゲームエンジン「Unity」に関するカテゴリーです。

Shader内でTiling/Offset値の取得方法

UnityのShaderプログラム内で「Tiling」や「Offset」の値を知りたい場合は{TextureName}_STの値を参照すると良いそうです。

sampler2D _MainTex;
float4 _MainTex_ST;
_MainTex_ST.x; // Tilingのxの値
_MainTex_ST.y; // Tilingのyの値
_MainTex_ST.z; // Offsetのxの値
_MainTex_ST.w; // Offsetのyの値

テクスチャーのサイズを知りたい場合は{TextureName}_TexelSizeの方が使えます。

リンク

Unity – Manual: Accessing shader properties in Cg/HLSL
https://docs.unity3d.com/560/Documentation/Manual/SL-PropertiesInPrograms.html

文字列に合わせたUI.Textのサイズを取得する方法

UnityのUI.Textで、実際にテキストを表示した際のサイズが知りたい場合はpreferredWidthpreferredHeightを使って調べることができるそうです。

使い方

Text text;

float width = text.preferredWidth;
float height = text.preferredHeight;

テキストのサイズに合わせてUIを調整したい場合に便利かなと思います。

TextMeshPro

TexhMeshProの場合もpreferredWidthpreferredHeightを使って実際のサイズを調べることができるようです。

使い方

TMPro.TextMeshProUGUI text;

float width = text.preferredWidth;
float height = text.preferredHeight;

リンク

Unity – Scripting API: ILayoutElement
https://docs.unity3d.com/ScriptReference/UI.ILayoutElement.html

Class TextMeshProUGUI | TextMeshPro | 1.5.6
https://docs.unity3d.com/Packages/[email protected]/api/TMPro.TextMeshProUGUI.html

allowSceneActivation=falseを使う場合の注意

SceneManager.LoadSceneAsync

allowSceneActivation = false

で使う場合は、isDonetrueにならないそうなので、気を付けてください。

allowSceneActivation = true

とした後でtrueになるそうです。ちなみに、progressの値も0.9までで止まるみたいです。ロードの完了を待ってシーンを表示するコード書こうとして少しハマってしまいました。

リンク

Unity – Scripting API: AsyncOperation.allowSceneActivation
https://docs.unity3d.com/ScriptReference/AsyncOperation-allowSceneActivation.html

Unity – Scripting API: SceneManagement.SceneManager.LoadSceneAsync
https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSceneAsync.html